Ciao,
devo scrivere un programma che permetta all'utente di trovare il MCD tra 2 numeri interi (per comodità adesso ho imposto che siano minori di 100'000)non negativi, il problema è che non devo farlo utilizzando il metodo di Euclide ma bensì il metodo usato alle scuole medie ossia:
1)Nel caso in cui num1=num2 il MCD è num1;
2)Se questo non è vero allora bisogna verificare se il primo numero inserito è primo e se questa condizione è vera il MCD è 1;
3)Se neppure questa condizione è vera bisogna verificare se il secondo numero è primo e se questa condizione è vera il MCD è 1;
4)Se neppure dopo il passaggio non si è trovato il MCD si inizia con la fattorizzazione in numeri primi;
5)Si moltiplicano i numeri primi comuni con l'esponente minore ricavati dalla fattorizzazione e si ottiene il MCD.
I problemi che riscontro sostanzialmente sono 3:codice://Calcolo del MCD usando il metodo tradizionale #include<stdio.h> main() { int a, b,i, j, primo, MCD; printf("Calcolo del MCD tra 2 numeri:\n\n"); for (i=2; i<=100; i++) { primo= 0; //Inizializzazione della variabile primo for(j=2; j<i; j++) { if(i%j!=0)//Scorre tutti i divisori del numero i(dal numero 2) { primo++; } } if (primo==i-2) {//Se tutti i numeri precedenti(all'i-esimo numero) divisi per l'i-esimo numero //hanno dato resto diverso da 0 printf("%d\t", i); //Allora l'i-esimo numero è un numero primo } } printf("Inserire il primo numero intero non negativo:\n"); scanf("%d",&a); printf("Inserire il secondo numero intero non negativo:\n"); scanf("%d",&b); if(a==b) { MCD=a; printf("Il MCD tra %d e %d e\':%d",a,b,MCD); } else { if(a==primo) { printf("Il MCD tra %d e %d e\':1",a,b,); } else { if(b==primo) { printf("Il MCD tra %d e %d e\':1",a,b,); } else { //Fattorizzare in numeri primi } } } system("pause"); }
1)Il primo numero primo che mi appare è 2 e non è 1;
2)Il compilatore mi da un errore sintattico prima del primo printf("Il MCD tra %d e %d e\':1",a,b,);
3)Ho guardato altri forum per capire come fare la fattorizzazione in numeri primi ma non sono riuscito a capire (dove ci sarebbe dovuta essere la fattorizzazione ho scritto semplicemente //Fattorizzare in numeri primi non sapendo cosa fare).
Come posso fare per risolveli?![]()
Vi ringrazio anticipatamente.

Rispondi quotando