Les nombres premiers :programme c

Fermé
-
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
-
Bonjour tt le monde,
j'aimerai savoir si ce code est correct ,l utilisateur tappe un nombre n et le programme doit afficher le n-ieme nombre premier correspendant
voila le code :


#include<stdio.h>
#include<conio.h>
int fonction2(int n);
int fonction1(int x);


void main()

{
int n,nombrepremier;
puts("tappez un entier:");
scanf("%d",&n);
if(n>0) //pour tester le nombre entré par l utilisateur
{
nombrepremier=fonction1(n);
printf("le %d nombre premier est :%d",n,nombrepremier);
}
}
//la fonction ki renvoi un int (0-->nombre non premier,autre nombre-->nombre premier)

int fonction1(int x)
{
int y=2,booleen;

while(y*y<=x)
{
if(x%y!=0)
{y++;
booleen=1;
}
else booleen=0;
}

return booleen;
}
//la fonction 2 ki retourne le n ieme nombre premier correspendant

int fonction2(int n)
{
int j=0,i=1,tableau[]={0};

while(j<n)
{
if( foncyion1(i) )
{
j++;
tableau[j]=i;
}
i++;
}
return tableau[j];
}

2 réponses

Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
431
il suffit que tu le testes pour savoir si le code est bon...
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
129
Bonjour,

J'ai un peu remanié ton code, comme tu peux le constater, teste-le et dis-moi ce que tu en penses, moi là j'en ai mare. Je l'ai testé ça semble aller, à toi maintenant, il est trop tard (ou trop tôt) pour continuer.

//2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 et 97

int main() 
{ 
//Initialise les variables.
  int n = 0,  bool_1er = 0, nombre_1er_voisin = 0; 
  int ind_prog_m = 0; 
  signed int borne_m    = 2147483646;

//Pour boucler sur la fonction à concurrence de la valeur -1 saisie.
  while (n != -1)
     {
cout <<"\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 et 97";
      puts  ( "\n\n tappez un entier: " ); 
      scanf ( "%d", &n ); 
      if ( n  >  0  ) //pour tester le nombre entré par l utilisateur 
        { 
            bool_1er        =       fonction1 ( n );
            if ( bool_1er  == 0 && n != 1)
             {
                printf ("\n %d n'est pas un nombre premier ", n); 
//                borne_m    = 2147483646;
                ind_prog_m = 1;
                nombre_1er_voisin   =       fonction2 ( n, ind_prog_m, borne_m ); 
                printf ("\n %d est le nombre premier immediatement > voisin de: %d", "
                          "nombre_1er_voisin, n);
                ind_prog_m = -1;
                nombre_1er_voisin   =       fonction2 ( n, ind_prog_m, borne_m ); 
                printf ("\n %d est le nombre premier immediatement < voisin de: %d", "
                          "nombre_1er_voisin, n); 
            }
          else
           {
             if ( n == 1)
              { printf ("\n 1 n'est ni premier ni composé");}
            else
              { printf ("\n %d est un nombre premier ", n); }
          }
        }
     else
       {
          if ( n  < -1  )
           {
             printf ("\n Nombre saisi incoherent:%d", n);
           }
        }
     }
return (0);
} 
//la fonction ki renvoi un int (0-->nombre non premier,autre nombre-->nombre premier) 

 int fonction1    (int x) 
  { 
   int y = 0,  booleen; 

   for ( y = 2;   y < x;   y++ )
      { 
       if  ( (x % y) == 0)  { booleen  =  0; break; }
      else                       { booleen  =  1; } 
      } 
   if ( x   ==  2 )          { booleen  =  1; }

   return booleen; 
 } 

//la fonction 2 ki retourne le n ieme nombre premier correspendant 
 int fonction2   (int n, signed  int ind_prog, int borne) 
 { 
   int j = 0; 
   for (  j  = n + ind_prog;  j < borne; j = j + ind_prog ) 
      { 
       if ( fonction1 (j) )  
         { 
          break; 
         } 
      } 
  return (j); 
 }