Langage C, Nombre premier [Résolu/Fermé]

Signaler
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
-
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
-
Bonjour,

Un nombre est dit premier s'il est divisible par 1 et lui même. Exemple 3,5,7...

Ce programme est censé tester la primalité d'un nombre mais à l'exécution (je suis sous ubuntu), le curseur reviens juste à la ligne et rien ne se passe. Le voici:

#include<stdio.h>
int quotient,nbr,div,nb_div;
int nb_div=1;
main()
{
do
{
printf("Entrez la valeur (elle doit être positive) à tester: ");
scanf("%d", &nbr);
}
while(nbr<0);
for(div=2;div=nbr;div++)
{
if(nbr%div==0)
{
quotient=nbr/div;
if(quotient!=div)
nb_div=nb_div+2;
if(quotient==div)
nb_div=nb_div+1;
}

if(nbr%div!=0)
{
printf("%d n'est pas un diviseur de %d", div,nbr);
}
if(nb_div==2)
printf("%d est un nombre premier", nbr);
else
printf("%d n'est pas un nombre premier", nbr);
}


3 réponses

Messages postés
57
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
1 octobre 2011
8
Je n'arrive pas a trouver l'algorithme qui permet de voir si c'est un nombre premier mais j'ai testé le tient et il ne marche pas. Il me fait une boucle infini avec marqué a chaque fois ( quelque soit la valeur) "n'est pas un nombre premier".
De plus il manque une accolade a la fin. Il faut que tu casse la boucle un jour si non sa marche pas et il faut que tu refasse l'algorithme.
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 495
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
195
Merci. Grâce à ca, j'ai pu faire ce qui est ci dessous qui marche à tous les coups.

#include<stdio.h>
int nbr,n,compter;
main()
{
compter=0;
do
{
printf("Donner la valeur à tester: ");
scanf("%d", &nbr);
}
while(nbr<0);
for(n=2;n<nbr;n++)
{
if(nbr%n==0)
compter=1;
}
if(compter==1)
printf("%d n'est pas un nombre premier\n", nbr);
else if(compter==0)
printf("%d est un nombre premier\n", nbr);
}
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
195
Merci. Le probleme avec l'algorithme, c'est que je n'arrive pas à compter le nombre de diviseur pour ensuite le comparer à 2. Si c'est égale à 2, c 1 nombre premier.