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.
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");
}
I problemi che riscontro sostanzialmente sono 3:
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.