codice:
mcm((conta=+1)*n1)
Chiami una funzione che accetta 2 parametri con 1 solo parametro
codice:
int resto= mcm%n2;
Usi la variabile mcm, ma non è dichiarata da nessuna parte: non è una variabile globale, non è un parametro della funzione e non è una variabile locale.
codice:
int main() {
int n1, n2, mcm;
printf("\nInserisci il primo numero: ");
scanf("%d", &n1);
printf("\nInserisci il secondo numero: ");
scanf("%d", &n2);
printf("\Il mcm di %d e %d e' %d", n1, n2, mcm);
}
mcm è una variabile non inizializzata che stampi a video: un valore random
manca il return
La soluzione più banale per trovare mcm ricorsivamente è partire a contare da 1 e vedere se viene diviso da entrambi:
codice:
#include <stdio.h>
int mcm(int n, int m, int mcm_v) {
if(mcm_v%n == 0 && mcm_v%m==0) {
return mcm_v;
}
else {
return mcm(n, m, mcm_v+1);
}
}
int main(void) {
int n, m;
printf("Inserisci il primo numero naturale positivo: ");
scanf("%d", &n);
printf("Inserisci il secondo numero naturale positivo: ");
scanf("%d", &m);
printf("mcm(%d, %d) = %d", n, m, mcm(n, m, 1));
return 0;
}
Alternativamente puoi usare la relazione mcm(n,m)=n*m/MCD(n,m) e spostare la ricorsione su MCD:
codice:
#include <stdio.h>
int MCD(int n, int m) {
if(m > n) {
return MCD(m, n);
}
else if(m==0) {
return n;
}
else {
return MCD(m, n%m);
}
}
int mcm(int n, int m) {
return n/MCD(n, m)*m;
}
int main(void) {
int n, m;
printf("Inserisci il primo numero naturale positivo: ");
scanf("%d", &n);
printf("Inserisci il secondo numero naturale positivo: ");
scanf("%d", &m);
printf("mcm(%d, %d) = %d", n, m, mcm(n, m));
return 0;
}