Programme nombre premier

etienne.raoul Messages postés 10 Statut Membre -  
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();
}

3 réponses

  1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    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
  2. etienne.raoul Messages postés 10 Statut Membre 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
  3. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    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