/*Si chieda all’utente di inserire un numero intero da 2 a 1000. Dire se il numero inserito è primo e stamparne la lista dei divisori.*/ /*PS: QUESTO CODICE E' LA MIA SOLUZIONE, POSSONO ESSERCI CODICI DIVERSI CHE SVOLGONO LO STESSO PROGRAMMA E POSSONO ESSERE GIUSTI, QUINDI NON PRENDETE PER LEGGE QUELLO CHE HO SCRITTO PROGRAMMA CONSIGLIATO PER VISUALIZZARE IL FILE : DEV C++ ESERCIZI BY: E.L.*/ #include<stdio.h> #include<stdlib.h> main() { int n, d=0,c=0;//n=numero , d=divisore ,c=contatore divisori, printf("Inserisci un numero da 2 a 1000: "); scanf("%d",&n); if((n<2)||(n>1000))//controllo che il numero sia tra 2/1000 while((n<2)||(n>1000)) { printf("Dai fai il serio e metti un numero giusto!: "); scanf("%d",&n); } if (n%2==0)//se il resto è 0 il numero è pari e non è primo { printf("\nIl numero non e' sicuramente primo perche' pari!\n\n Isuoi divisori sono:\n"); while (d!=((n/2)+1)) //fino a che il divisore è diverso della metà+1 del numero ha senso dividere { d++; if(n%d==0) printf("%d\n",d); } printf("%d\n",n);//visto che prima ho saltato tutti i numeri tra n/2 e n, manca un divisore, che è n, quindi l } else { printf("\nI divisori del numero sono:\n"); while (d!=((n/2)+1)) //fino a che il divisore è diverso della metà+1 del numero ha senso dividere { d++; if(n%d==0) { printf("%d\n",d); c++; } } printf("%d\n",n); if(c==1) printf("\nQuindi il numero e' primo perche' ha solo 2 divisori che sono 1 e %d\n\n",n); if(c>1) printf("il numero non e' primo , ti e' andata male ;)\n\n"); } system("pause"); return 0; }