Liste nombres premiers en c

helloct Messages postés 11 Statut Membre -  
tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
est ce possible d'avoir un programme en c qui affiche une liste des nombres premier jusqu'a 500 avec le boucle for.

5 réponses

  1. tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   25
     
    Je remarque que tu essaie de tester si ts les nombres allant de 2à 500 sont premiers, en divisant chacun par ts les entiers inferieure à lui et en jouant sur le reste obtenu;
    Mais pr le cas n=4, ton algo ne marche pas; ce que je te propose c'est déja de faire les tests seulement sur les entiers impairs compris entre 3 et 500(premiere boucle pour), ensuite pour un entier i, donné, pour savoir s'il est premier, tu le divise simplement par tous les entiers inférieures ou égaux à sa racine carrée(2bde boucle);si dans la2nde boucle, tu obtient un reste de division nul, alors tu peux sortir de la boucle sachant que le nombre correspondant dans la premiere boucle n'est pas premier, par contre si au terme de la 2nde boucle, aucun reste des divisions n'est nul, alors le nbre correspondant dans la premiere boucle est premier.) J'espere t'avoir assez aidé, essaie d'ecrire dabord l'algo correspondant et tu ns l'envoie
    1
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Oui, en C c'est possible comme dans tous les langages. Il y a plusieurs façons de faire.
    Tu envisages de le faire comment ? Poste ton programme si tu veux qu'on t'aide.
    0
  3. tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   25
     
    Oui c'est possible
    0
  4. helloct Messages postés 11 Statut Membre
     
    Bon voila ce que j'avais fait.

    int main()
    {

    int a=500;
    int aide=2;
    int i;
    int j;

    printf("Voila la liste des nombres premier ");

    for (j=2 ; j<a ; j++)
    {
    for(i=1 ; i<j ; i++)
    {
    if (j%i==0)
    aide=aide+i
    }

    if(aide==j)

    printf("%d est un nombre premier \n",&j);
    }

    return 0;
    }

    apparrement j'ai rater quelque chose
    et merci pour votre reponse
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Votre algorithme ne correspond pas à la définition d'un nombre premier mais à celle d'un nombre amiable. Solution recopiée sur internet ?
    Un nombre est premier s'il divisible que par lui-même et un.
    Je vous conseille de faire une fonction : int estPremier(int nb) qui renverra 0 si le nombre est non premier, 1 s'il l'est.
    Ainsi, le programme ressemblera à :
    #define MAX 500
    
    int estPremier(const int i) {
        int j;
        for(...
             if(...)
                return 0;
        return 1;
    }
    
    int main(void) {
       int i,j;
       for(i=2;i<MAX;i++) {
             if(estPremier(i))
                   printf("%d\n",i);
        }
        return 0;
    }
    

    Je vous laisse à titre d'exercice les trois petits points.
    Cdlt,
    0