Salve a tutti,
recentemente ho approcciato il linguaggio C iniziando a fare semplici programmi, ho un insegnante molto severo e richiede la massima efficienza dei codici, la consegna era di calcolare tutti i fattori primi di un numero e stamparli a video, questa e' la codifica:
potreste gentilmente aiutarmi a ottimizzarlo?codice:#include <stdio.h> int main() { int n; //numero in input int r; //resto int d; //divisore int q; //quoziente int i; //contatore dei fattori i=0; //resetto il contatore d=2; //imposto il divisore a 2 do //input e controllo del numero per n>0 { printf("Gimme n>0: "); scanf("%d",&n); } while (n<=0); if (n<4) //se 0<n<4 allora il numero è primo { printf("\n%d è un numero primo.",n); return(0); } q=n; while (d<=q) //finchè il divisore è maggiore del numero da dividere, divido e stampo il divisore { r=q%d; //calcolo il resto tra il numero e il divisore if (r==0) //se il resto è 0, d è un divisore { printf("\n%d",d); //stampo il divisore q=q/d; //divido il numero soltanto se trovo un disore i++; //conto quanti divisori stampo a video } else //se il resto è diverso da 0, aggiungo il resto all' attuale divisore { d=d+r; } } if (i==0)printf("\n%d è un numero primo.",n); //se non e stato trovato nessun divisore il numero è primo return (0); }![]()

Rispondi quotando
