Liste nombres premiers en c

Fermé
helloct Messages postés 8 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 26 juin 2011 - Modifié par helloct le 10/07/2010 à 17:25
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 10 juil. 2010 à 19:50
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 samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
10 juil. 2010 à 19:50
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
10 juil. 2010 à 17:53
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 samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
10 juil. 2010 à 19:00
Oui c'est possible
0
helloct Messages postés 8 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 26 juin 2011
Modifié par helloct le 10/07/2010 à 19:26
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
10 juil. 2010 à 19:28
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