[programmation C]Nombre premier
kreuk801
Messages postés
23
Statut
Membre
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
voila dans un exercice que j'ai a faire je doit creer une fonction qui me donne les nombre premier inferieur a N (N etant entré par l'utilisateur ).
Voila mon code :
malheureusement , la 2e fonction ne m'affiche pas tout le nombre premier , je n'arrive pas a trouver mon erreur si quelqu'un peut m'aider se serait simpas merci :)
voila dans un exercice que j'ai a faire je doit creer une fonction qui me donne les nombre premier inferieur a N (N etant entré par l'utilisateur ).
Voila mon code :
//Fonction disant si le nombre est premier
int premier (int x)
{
int i,y;
y=sqrt(x)+1;
if (x%2==0)
{
return 0;
}
else
{
for (i = 3 ; i < y; i+=2)
if (y % i != 0)
{
return 0;
}
else
{
return 1;
}
}
}
// Fonction qui affiche les nombres premiers inferieur à n
int premier2 (int x)
{
int j,a;
// Boucle permettant de scanner les nombres entre 0 et n
for (j=1; j<x;j++)
{
a = premier(j);
// Affichage des nombres si ils sont premiers
if (a == 1)
{
printf("%d ",j);
}
}
printf("\n\n");
}
malheureusement , la 2e fonction ne m'affiche pas tout le nombre premier , je n'arrive pas a trouver mon erreur si quelqu'un peut m'aider se serait simpas merci :)
A voir également:
- [programmation C]Nombre premier
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Application de programmation - Guide
- Pourquoi certaines personnes apparaissent en premier sur messenger ✓ - Forum Facebook
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
2 réponses
C'est ta première fonction qui est fausse.
/*Ce n'est pas y%i mais x%i*/
/*Ce n'est pas si x%i est différent de 0 qu'il faut renvoyer 0, mais si c'est égal à 0*/
if (y % i != 0)
{
return 0;
}
/*Ce n'est pas parce que le nombre n'est pas divisible par i que le nombre est premier. Il faut vérifier pour tous les nombres du for*/
else
{
return 1;
}
Ce qu'il faut faire c'est :
Cdlt,
/*Ce n'est pas y%i mais x%i*/
/*Ce n'est pas si x%i est différent de 0 qu'il faut renvoyer 0, mais si c'est égal à 0*/
if (y % i != 0)
{
return 0;
}
/*Ce n'est pas parce que le nombre n'est pas divisible par i que le nombre est premier. Il faut vérifier pour tous les nombres du for*/
else
{
return 1;
}
Ce qu'il faut faire c'est :
for(...) {
if ( ...)
return 0;
}
/*là on a vérifié pour tous les nombres du for.*/
return 1;
Cdlt,
Merci pour ton aide , voila ma fonction corrigé , il y a encore quelque nombre non premier dedans mais je ne vois toujours pas pk...
int premier (int x)
{
int i,y;
y=sqrt(x)+1;
if (x%2==0)//permet de voir si le nombre est paire ou non
{
return 0;
}
else
{
for (i = 1 ; i < y; i+=2)//boucle sans les diviseurs paires
{
if (x % i == 0)
return 0;
else
return 1;
}
}
}