Nombres premiers
Résolu
Kixool
-
Kixool -
Kixool -
Bonjour,
J'ai un tp à préparer pour mardi et je voulais savoir ce qui clochait dans mon programme... Il s'agit de faire un programme qui dit si la valeur entrée par l'utilisateur est correcte ou pas.
J'ai essayé ceci mais il doit y avoir un problème :
Si vous pouviez m'aider ... merci d'avance!
J'ai un tp à préparer pour mardi et je voulais savoir ce qui clochait dans mon programme... Il s'agit de faire un programme qui dit si la valeur entrée par l'utilisateur est correcte ou pas.
J'ai essayé ceci mais il doit y avoir un problème :
#include <stdio.h> #include <math.h> int main() { int vu; // Valeur entrée par l'utilisateur int vd=0; // variables des diviseurs int vi=0; // valeur intermédiaire de test printf (" Entrez un nombre dont vous souhaitez savoir si il est un nombre premier :"); scanf ("%d",&vu); for (vd>=2 ; vd<=vu ; vd++) { vi=vu%vd; } if (vi==0 && vd==vu)printf("ce nombre est un nombre premier"); if (vi==0 && vd!=vu)printf("Ce nmbre n'est pas premier"); return 0; }
Si vous pouviez m'aider ... merci d'avance!
A voir également:
- Nombres premiers
- Code binaire des nombres - Guide
- Nombres faciles - Télécharger - Outils professionnels
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum Excel
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum LibreOffice / OpenOffice
- Trouver un numéro avec les 6 premiers chiffres - Forum Freebox
3 réponses
Salut,
Essaye ceci, ça devrait marcher.
Sinon quelque remarque sur ton code. Tu ne te sers pas de la bibliothèque math donc pas besoin de l'inclure.
Tu peux incrémenter vu de 2 en 2 dans ta boucle for en partant de vd=3 en prenant le soin de vérifier que vu n'est pas pair. En effet pas besoin de diviser vu par un nombre pair s'il n'est pas divisible par 2.
N'oublie pas de tester si le nombre est supérieur à 2 avant de rentrer dans ta boucle for. Sinon il va y avoir des surprises.
Et un dernier point : pas besoin d'aller de 2 à vu dans la boucle for. De 2 à sqrt(vu) (racine) suffira.
Voilà, de quoi améliorer ton code.
Cdlt
Essaye ceci, ça devrait marcher.
Sinon quelque remarque sur ton code. Tu ne te sers pas de la bibliothèque math donc pas besoin de l'inclure.
Tu peux incrémenter vu de 2 en 2 dans ta boucle for en partant de vd=3 en prenant le soin de vérifier que vu n'est pas pair. En effet pas besoin de diviser vu par un nombre pair s'il n'est pas divisible par 2.
N'oublie pas de tester si le nombre est supérieur à 2 avant de rentrer dans ta boucle for. Sinon il va y avoir des surprises.
Et un dernier point : pas besoin d'aller de 2 à vu dans la boucle for. De 2 à sqrt(vu) (racine) suffira.
Voilà, de quoi améliorer ton code.
#include <stdio.h> #include <math.h> int main() { int vu; // Valeur entrée par l'utilisateur int vd=0; // variables des diviseurs int vi=0; // valeur intermédiaire de test printf (" Entrez un nombre dont vous souhaitez savoir si il est un nombre premier :"); scanf ("%d",&vu); for (vd=2 ; vd<=vu ; vd++) { if (vu%vd==0 && vd!=vu){ printf("ce nombre n'est un nombre premier\n"); return 0; } } printf("Ce nombre est premier\n"); return 0; }
Cdlt