Ciao a tutti.
Ho appena iniziato a studiare C e sto facendo gli esercizi, credo che questo sia facile ma non riesco a farlo.
Io ho fatto questo algoritmo(mi sa che è un po' brutale, ma siamo agli inizi e non so farne di meglio) mi interessa sapere dove è sbagliato(mi da come fattori primi multipli di 5).
codice:
# include <stdio.h>
# include <stdlib.h>
int main() {
int num, d, f, dprimo=-1;
printf("inserire valore da fattorizzare\n");
scanf("%d", &num);
for(d=2; d<=num; d++){
for(f=2; f<d; f++){
if(num%d==0&&d%f!=0)
dprimo=d;
else
dprimo=-1;
break;
}
if(dprimo!=-1){
printf("%d\n", dprimo);
num=num/dprimo;
}
}
return 0;
}
Il professore ci ha dato invece questo come soluzione ma non riesco a capirlo, a me sembra mancare di molte parti, me lo potete spiegare?
codice:
# include <stdio.h>
int main() {
int num, fatt, cont;
printf("\nInserisci un numero intero \n");
scanf("%d",&num);
printf("\n i fattori primi di %d sono:",num);
for (fatt=num;fatt>1;fatt--) { //ipotesi: se num è primo considero num
// divisore primo di se stesso
if(num%fatt==0) { /*se fatt è divisore di num cerca se ha divisori*/
cont=fatt-1; // tutti i numeri son divisibili per se stessi, quindi fatt-1
while((cont > 1) && (fatt%cont != 0))
cont--;
/* se sono arrivato a 1 vuol dire che non ho trovato divisori
quindi stampo fatt perché primo */
if (cont == 1)
printf(" %d ",fatt);
}
}
return 0;
}
Grazie a tutti!