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;
}