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).
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> # 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; }
Grazie a tutti!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; }

Rispondi quotando