Toujours nbre premier.

Sabetodo Messages postés 127 Statut Membre -  
 loupius -
Bonjour,
salut tout le monde.un petit coup de main pour cet exo:Je dois ecrire une fonction qui renvoie le nombre premier immédiatement supérieur ou égal au nombre passé en paramètre. Elle devra etre prototypée de la manière suivante :
int my_find_prime_sup(int nb);
en fait j'ai essaie de le faire mais c'est pas evident puisqu'il ne renvoie pas le nombre premier immédiatement supérieur ou égal au nombre passé en paramètre. par ex, lorsque je lui passe 4, il me renvoie toujours 4.

int my_putchar(char c)
  {
    write(1, &c, 1);  
  }
  
int my_find_prime_sup(int nb)
{
     int i=2,cp;
     
       
     
    if((nb!=0) && (nb!=1))
     {
       do
        {
        
          i=2;
               if((nb%i)==0)
                {
                  return (nb);
                }
                
               nb++;
               i++;
        }
         while(nb%i==0);
         
       
        return(nb);
     }
    return(0);
}
   
int main ()
{
  int nb=4;
      
  printf("%d\n",my_find_prime_sup(nb));
  
  return(0);
  
}
      

1 réponse

loupius
 
Je vois que depuis hier tu as fait un effort: le 'main' retourne une valeur... mais pas encore le 'my_putchar'... peut-être pour demain !
Dans la boucle 'do while':
- si le nombre est pair et comme i=2 alors (nb%i)==0 est vrai le on retourne le nombre pair,
---> donc erreur de conception.
do
{

i=2;
if((nb%i)==0)
{
return (nb);
}

nb++;
i++;
}
while(nb%i==0);
0