Io ho fatto un programma in C++ che fattorizza 3 numeri interi e ne ricava mcm e MCD, ti posto il codice per farti vedere come ho risolto:
codice:
#include <iostream.h>
#include <iomanip.h>
int MCD(int, int, int);
int mcm(int, int, int);
int main() {
int a,b,c;
bool is;
int co = 0;
cout << "Questo programma fattorizza tre numeri e ne ricava mcm e MCD\nInserisci tre numeri interi:\n";
cin >> a;
cin >> b;
cin >> c;
int numfirst[5000];
for(int i = 2; i < 5000; i++) {
is = true;
for(int j = 2; j < i/2; j++)
if((i%j) == 0) is = false;
if(is)
numfirst[co] = i;
co++;
}
int now, nowb, nowc;
now = a;
for(int n = 0; n <= co; ) {
if(now % numfirst[n] == 0) {
cout << endl << now << ":";
cout << numfirst[n] << "\r";
now /= numfirst[n];
n = 0;
}
else n++;
}
nowb = b;
cout << endl;
for(int o = 0; o <= co; ) {
if(nowb % numfirst[o] == 0) {
cout << endl << nowb << ":";
cout << numfirst[o] << "\r";
nowb /= numfirst[o];
o = 0;
}
else o++;
}
nowc = c;
cout << endl;
for(int p = 0; p <= co; ) {
if(nowc % numfirst[p] == 0) {
cout << endl << nowc << ":";
cout << numfirst[p] << "\r";
nowc /= numfirst[p];
p = 0;
}
else p++;
}
cout << endl;
cout << "\nmcm(" << a << ", " << b << ", " << c << ")" << " = " << mcm(a, b, c) << endl;
cout << "MCD(" << a << ", " << b << ", " << c << ")" << " = " << MCD(a, b, c) << endl << endl;
cout << "Premi un tasto per uscire: ";
char exit;
cin >> exit;
return 0;
}
int mcm(int a, int b, int c) {
for(int mcm = 2; ; mcm++) {
if(mcm % a == 0 && mcm % b == 0 && mcm % c == 0) break;
}
return mcm;
}
int MCD(int a, int b, int c) {
int max;
if(a > b && a > c) max = a;
else if(b > a && b > c) max = b;
else if(c > a && c > b) max = c;
for(int MCD = max; ; MCD--) {
if(a % MCD == 0 && b % MCD == 0 && c % MCD == 0) break;
}
return MCD;
}