Programme nombre premier
etienne.raoul
Messages postés
10
Statut
Membre
-
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai écrit l'algorithme d'un programme qui donne tous les nombre premiers inférieur à un nombre n donné par l'utilisateur. J'ai essayé dans le même programme de lui faire sortir le plus grand nombre premier inférieur à n mais apparemment je m'y suis mal prit vu qu'il me sort toujours 0. Je mets ci-dessous mon algorithme. Pourriez vous m'indiquer l'erreur?
#include <stdio.h>
#include <conio.h>
int main()
{ int i,p,n,m;
printf("Veuillez rentrer un nombre entier : " );
scanf("%d",&m);
n=1;
printf("Les nombres premiers inferieurs a %d sont :",m);
while (n<m+1)
{ i=1;
while (i*i<n+1)
{i=i+1;
if (n%i!=0) {p=n;}
else {p=0;
i=n+1;}
}
if (p!=0) {printf(", %d",p);}
n=n+1; }
printf("\n Le plus grand nombre premier inferieur a %d est %d",m,p);
getch();
}
j'ai écrit l'algorithme d'un programme qui donne tous les nombre premiers inférieur à un nombre n donné par l'utilisateur. J'ai essayé dans le même programme de lui faire sortir le plus grand nombre premier inférieur à n mais apparemment je m'y suis mal prit vu qu'il me sort toujours 0. Je mets ci-dessous mon algorithme. Pourriez vous m'indiquer l'erreur?
#include <stdio.h>
#include <conio.h>
int main()
{ int i,p,n,m;
printf("Veuillez rentrer un nombre entier : " );
scanf("%d",&m);
n=1;
printf("Les nombres premiers inferieurs a %d sont :",m);
while (n<m+1)
{ i=1;
while (i*i<n+1)
{i=i+1;
if (n%i!=0) {p=n;}
else {p=0;
i=n+1;}
}
if (p!=0) {printf(", %d",p);}
n=n+1; }
printf("\n Le plus grand nombre premier inferieur a %d est %d",m,p);
getch();
}
3 réponses
-
Code incompréhensible ... Ca c'est mieux :
#include <stdio.h> #include <conio.h> int main() { int i,p,n,m; printf("Veuillez rentrer un nombre entier : " ); scanf("%d",&m); n=1; printf("Les nombres premiers inferieurs a %d sont :",m); while (n<m+1) { i=1; while (i*i<n+1) { i=i+1; if (n%i!=0) p=n; else { p=0; i=n+1; } } if (p!=0) printf(", %d",p); n=n+1; } printf("\n Le plus grand nombre premier inferieur a %d est %d",m,p); getch(); }
Pourquoi affecter n "plus tard" alors que tu peux lui donner une valeur à sa création ? i++; c'est plus clair que i=i+1; ...
C'est normal que ton programme te dise que le plus grand nombre premier < m est 0 vu que tu massacres la variable p lorsque le nombre testé n'est pas premier ...
Affiche le contenu de tes variables à l'intérieur des boucles à l'aide de printf() et tu trouveras tes autres erreurs ... -
Effectivement quand je lance le programme il me met que 1 est premier et 2 ne l'est pas. Don avant de m'occuper du plus grand nombre premier inférieur à n il faut que ma méthode de calcul soit bonne... J'ai beau chercher je ne comprends pas où j'ai fait une erreur...
-
Procède méthodiquement : code déjà une boucle pour afficher les nombres à tester et on verra pour la suite ...
Google is your best friend
VB.NET is good ... VB6 is better !