Nbre premier.
Résolu
Sabetodo
Messages postés
120
Date d'inscription
Statut
Membre
Dernière intervention
-
Sabetodo Messages postés 120 Date d'inscription Statut Membre Dernière intervention -
Sabetodo Messages postés 120 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
salut le gars. J'ai un petit probleme avec ma fonction.En fait je suis ecrire une fonction qui renvoie 1 si le nombre est premier ,et 0 si le nombre ne l'est pas.je l'ai fait et ca a l'air de marcher. Quand je lui passe 5 ou 7 en parametre il affiche 1.jusque la c'est bon. mais pour 4 ou 6 il affiche toujours 1, alors qu'il est cense retourner 0.
voici ma fonction.
Bonjour,
salut le gars. J'ai un petit probleme avec ma fonction.En fait je suis ecrire une fonction qui renvoie 1 si le nombre est premier ,et 0 si le nombre ne l'est pas.je l'ai fait et ca a l'air de marcher. Quand je lui passe 5 ou 7 en parametre il affiche 1.jusque la c'est bon. mais pour 4 ou 6 il affiche toujours 1, alors qu'il est cense retourner 0.
voici ma fonction.
int my_putchar(char c) { write(1, &c, 1); } int my_is_prime(int nombre) { int i,cp=0; if((nombre!=0) && (nombre!=1)) { for(i=2;i<=nombre;i++) { if((nombre%i)==0) { cp++; } } if(cp>0) { return(0); } else return(1); } return(0); } int main() { int nombre=11; printf("%d\n",my_is_prime(nombre)); }
A voir également:
- Nbre premier.
- Pourquoi certaines personnes apparaissent en premier sur messenger ✓ - Forum Facebook
- Premier opinion ✓ - Forum Virus
- Premier bet loto 5/90 resultat du jour rdc ✓ - Forum Excel
- Amis facebook - 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
4 réponses
Salut,
Voici quelques exemples pour t'inspirer
Vérifier si un nombre entier est un nombre premier en C
Voici quelques exemples pour t'inspirer
Vérifier si un nombre entier est un nombre premier en C
Salut,
Bizarre sur ma machine, cela me retourne 0 dans tous les cas. Et cela est normale puisque tu fais une boucle :
Pour cela, tu transformes la condition du for en : i<nombre égalité stricte.
Sinon, ton algorithme est bien compliqué. Tu n'as pas besoin d'incrémenter une variable cp. A la place du cp++, tu fais un return 0. Dans ce cas là, t'es assuré que tu as un diviseur et que donc le nombre n'est pas premier. Et à la fin de la boucle, tu fais un return 1.
Cdlt
Bizarre sur ma machine, cela me retourne 0 dans tous les cas. Et cela est normale puisque tu fais une boucle :
for(i=2;i<=nombre;i++). Donc à la dernière itération i vaudra nombre et nombre%i vaudra toujours 0. Ce qui incrémentera cp d'où le retour de 0.
Pour cela, tu transformes la condition du for en : i<nombre égalité stricte.
Sinon, ton algorithme est bien compliqué. Tu n'as pas besoin d'incrémenter une variable cp. A la place du cp++, tu fais un return 0. Dans ce cas là, t'es assuré que tu as un diviseur et que donc le nombre n'est pas premier. Et à la fin de la boucle, tu fais un return 1.
Cdlt
Je vais reprendre mes annotations de ce matin...
Que d'erreurs !!! ;=))) mais, rassure-toi, on en a tous fait et malheureusement on en fait toujours.
Toutefois, le compilateur doit râler, et il faudrait au moins corriger ces erreurs-là:
- le 'main' déclaré 'int' n'a pas de valeur de retour,
- idem pour la fonction 'my_putchar',
Erreur de conception:
- le test 'if((nombre%i)==0)' lorsque 'i=nombre' sera toujours vrai, donc on aura toujours le même résultat quelquesoit le nombre.
Je m'arrête là.
Bon courage.
Que d'erreurs !!! ;=))) mais, rassure-toi, on en a tous fait et malheureusement on en fait toujours.
Toutefois, le compilateur doit râler, et il faudrait au moins corriger ces erreurs-là:
- le 'main' déclaré 'int' n'a pas de valeur de retour,
- idem pour la fonction 'my_putchar',
Erreur de conception:
- le test 'if((nombre%i)==0)' lorsque 'i=nombre' sera toujours vrai, donc on aura toujours le même résultat quelquesoit le nombre.
Je m'arrête là.
Bon courage.