Langage C - Nombres premiers

Résolu/Fermé
Shaey Messages postés 4 Date d'inscription dimanche 19 février 2012 Statut Membre Dernière intervention 14 mai 2012 - 19 févr. 2012 à 17:22
Shaey Messages postés 4 Date d'inscription dimanche 19 février 2012 Statut Membre Dernière intervention 14 mai 2012 - 19 févr. 2012 à 17:43
Bonjour,

Débutante en informatique (mais alors, vraiment, vraiment débutante), j'ai un petit problème sur un exercice. Un exercice basique et assez commun. Le but de ce dernier est de déterminer si un nombre est premier ou non.

Je sais que je peux vérifier en prenant la racine du nombre, et je trouve que ça serait plus facile. Je précise au cas où que je ne connais strictement rien au crible d'Erastosthènes (d'après ce que j'ai vu, c'est largement au dessus de mon niveau actuel).

Ce que je veux, moi, c'est diviser n par tous les nombres entre 2 et n-1, et vérifier si le reste est égal à 0 pour toutes les divisions. J'ai déjà fait le programme, mais il ne marche pas, je pense savoir pourquoi. J'ai introduit une boucle for pour faire toutes les divisions. A la suite, j'utilise la fonction if else. Si le résultat de la division est égal à 0, n n'est pas un nombre premier, dans le cas contraire, c'est un nombre premier.
Quand j'entre un nombre, ça m'affiche tout le temps que c'est un nombre premier.
Je pense que c'est parce que je ne prend pas en compte tous les résultats de la division qui ont été trouvés dans la boucle for, mais uniquement le dernier trouvé.
Je ne sais pas comment faire pour résoudre le problème.
Des idées ?
Merci d'avance.

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 févr. 2012 à 17:28
Dès que tu trouves que ce n'est pas un nombre premier, tu dois arrêter la boucle pour ne pas continuer. Par exemple avec un break, ou un return.
1
Shaey Messages postés 4 Date d'inscription dimanche 19 février 2012 Statut Membre Dernière intervention 14 mai 2012
19 févr. 2012 à 17:43
Effectivement, ça marche :)
Merci à toi, c'était tout simple, mais je l'avais tout simplement pas.
Encore merci, et bonne soirée.
0