Si chieda all`utente di inserire un numero intero da 2 a 1000. Dire se

annuncio pubblicitario
/*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;
}
Scarica