Nombre premier

Résolu
sanaa1 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
sanaa1 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je doi verifier si un nombre saisi au clavier est premier ou non voila mon programme ,je sais pas pourquoi ca marche pas,aidez moi svp



#include <iostream>
using namespace std;
int main()
{
int n;
cout<<"entrez un nombre entier positif"<<endl;
cin>>n;
for ( int i = 3 ; i < n/2 ; i++)
{
if (n%i == 0)
cout<<"le nombre n'est pas premier"<<endl;

else
cout<<"le nombre est premier"<<endl;
}

return 0;
}

4 réponses

dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
 
Salut.

C'est quoi qui marche pas ?

@+
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,

Tu as un problème d'algorithme dans ton code. Voici une correction, qui devrait marcher.

Cordialement

#include <iostream>
using namespace std;
int main()
{
int n;
cout<<"entrez un nombre entier positif"<<endl;
cin>>n;
if(n<=0) {
   cout << "le nombre doit etre positif"<<endl;
   return -1;
}
if(n==1){
   cout<<"le nombre est premier"<<endl;
   return 0;
}
else if(n==2) {
   cout<<"le nombre est premier"<<endl;
   return 0;
}

for ( int i = 3 ; i < n/2 ; i++)
{
   if (n%i == 0)
      cout<<"le nombre n'est pas premier"<<endl;
     return 0;
   }
}
   cout<<"le nombre est premier"<<endl;

return 0;
}
0
silvain-dup Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   2
 
1 n'est pas considéré comme un nombre premier
on dirait que vous oubliez de tester le facteur 2
pas besoin d'aller jusqu'à n/2, il suffit d'aller jusqu'à sqrt(n)
0
sanaa1 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   6
 
bonjour
merci bcp pour votre aide ca marche bien
0