Liste nombres premiers en c

helloct Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
tksteph Messages postés 204 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.



A voir également:

5 réponses

tksteph Messages postés 204 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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
tksteph Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   25
 
Oui c'est possible
0
helloct Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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