Programme nombre premier

etienne.raoul Messages postés 9 Date d'inscription   Statut Membre 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();
}


A voir également:

3 réponses

ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
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 ...
1
etienne.raoul Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   1
 
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...
0
ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
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 !
0