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
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
A voir également:
- Écrire un algorithme qui affiche les 100 nombres premiers
- Ecrire en gras sur whatsapp - Guide
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Ecrire en miroir - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
- Écrire en majuscule - Guide
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
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
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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
10 juil. 2010 à 17:53
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.
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.
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
10 juil. 2010 à 19:00
Oui c'est possible
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
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
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
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 844
10 juil. 2010 à 19:28
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 à :
Je vous laisse à titre d'exercice les trois petits points.
Cdlt,
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,