problème pour déterminer si un nombre est premier
Bonjour,
voila mon problème : j'ai monté un petit programme qui me dit si un nombre est premier ou pas. il fonctionne très bien pour des nombres jusqu'à 10 chiffres mais meme les nombre à 10 chiffres ne sont pas tous pris a partir d'environ 3000000000. je sais qu'il s'agit d'un problème de déclaration de variable, mais meme en les métant en long unsigned, ça ne change pas le problème.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
int p,x,n;
float r;
int main()
{
printf("-----------------------------\nVOTRE NOMBRE EST-IL PREMIER ?\n-----------------------------\n");
printf("NOMBRE A IDENTIFIER : ");
scanf("%d", &n);
r=sqrt(n);
p=1;
for(x=2;x<=r;x++)
{
if(n%x == 0)
{
printf("\nNON, %d N'EST PAS PREMIER", n);
p=0;
break;
}
}
if (p == 1)
{
printf("\nOUI, %e EST PREMIER", n);
}
fflush(stdin);
getchar();
return 0;
} |