CarDeFusco ha scritto:
JosAm93 ha scritto:
migliorabile ha scritto:
Stai facendo pasticci, e non stai sfruttando le proprieta' del mcm e della sua CONTROPARTE, il mcd/gcd (massimo comun divisore).
Intanto: a*b = mcm(a,b)*gcd(a,b).
Ora, ti serve una definizione ricorsiva dell'mcm OPPURE del gcd!
Ragionaci un po' e ci arrivj
Precedentemente avevo realizzato il MCD in modo ricorsivo: lo devo utilizzare per il mcm? In base alla formula che mi hai indicato potrei calcolare il mcm facendo il rapporto (a*b)/MCD(a,b)?
Implementa ricorsivamente la gcd(a,b) e poi usi la formula per avere mcm(a,b).
Come ti diceva migliorabile data una forma ricorsiva di uno dei due, ad esempio di gcd, il grosso è fatto. Non è difficile da trovare la definizione ricorsiva, basta googlare un po'.
Il metodo che ho implementato per calcolare il MCD è questo:
int mcd(int a, int b)
{
if (b == 0) return a;
else return mcd(b, a%b);
}
Mentre il mcm l'ho implementato in questo modo:
int mcm(int a, int b)
{
return a*b/mcd(a,b);
}
Sono corrette le implementazioni?