Voyage 200

cricrinature Messages postés 12 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 12 octobre 2006 - 17 avril 2006 à 16:25
cricrinature Messages postés 12 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 12 octobre 2006 - 18 avril 2006 à 18:15
Bonjour, je voudrai créer un programme permettant de vérifier si un nombre est premier ou pas (c'est-à-dire s'il n'est divisible que par lui-même et par 1 ou par d'autres nombres).




Voici mon algo :




lire n


k:=2


tant que k^2<=n faire


si k/n


imprimer : n est non premier


sinon


k:=k+1


imprimer : n est premier


fin du si


fin du tant




Voici ce que j'ai programmé sur la Voyage 200




nombprem(n)


Prgm


Local k


2->k


While k^2<=n


If k/n=true Then


Disp « le nombre n'est pas premier »


Else


k+1->k


Disp « le nombre est premier »


EndIf


EndWhile


EndPrgm




Lorsque je l'exécute, il m'affiche toujours que le nombre est premier ce qui n'est pas toujours le cas.


Pouvez-vous m'aider?


Je vous en remercie d'avance.

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 avril 2006 à 16:44
salut,
utilise le moteur de recherche, il y a beaucoup de sources à ce sujet
PCPT [AFCK]
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
17 avril 2006 à 17:15
Il faut réaliser non pas "If k/n = true" mais k mod n = 0. L'algorithme est pas très performant, lorsque les nombres deviennent trop grand, il est inefficace. Cf : Crible quadratique, GNFS sont meilleurs

Tu devrais tester ça


lire n


si n mod 2 = 0

imprimer : n est non premier

fin du si

k:=1


tant que k^2<=n faire


si n mod k = 0


imprimer : n est non premier


fin du si

k:=k+2


fin du tant


imprimer : n est premier
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
17 avril 2006 à 17:16
Oups c'est pas k = 1 mais k = 3. (Les nombres premiers sont divisibles par un)
0
cricrinature Messages postés 12 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 12 octobre 2006
18 avril 2006 à 18:15
merci
j'ai réussi à faire mon programme
0
Rejoignez-nous