Salut a tous.
Voila un algorithme (assez long je l'admet) qui se doit de verifier si un nombre est premier. Pour l'info je l'ai deja ecrit sur calculette en BAsic (HP) et ca allait impec. Voila le truc en Visual Basicss
1 : For i = 2 to (premier - 1) 'les var sont crées avantss 2 :ssss If premier mod i = 0 Then
3:ssssss MsgBOx("Pas premier" )
4:ssssss Else
5:ssssss MsgBox("premier" )
Pour moi ce truc teste toutes les valeurs de 2 a premier-1 (premier et le chiffre a tester) donc si le reste de la div euclidienne de premier par toutes les valeurse comprises entre 2 et premier-1 est different de 0 le nombre est premier.
Sinon il existe l'algo de wilson et le petit fermatss et pis le test de la racine carrée.
Merci de m'aider ou de me recommander un autressalgo
Publicité
Posté le 31-01-2001 à 14:34:26
Fred999
Rabat-joie
Posté le 31-01-2001 à 15:04:41
Le raisonnement est évidemment bon
Il ne manque pas des trucs genre NEXT et END IF???
frenchie15
Posté le 31-01-2001 à 15:26:10
tu dis qu'il marche pas mais il fait quoi ton algo, il te retourne toujours premier ?
wouatouwouatou
Posté le 31-01-2001 à 15:30:40
bizarre ton algo ... pi fredo a raison: il manque le next du for et le end if du if (end if du if pas mal hein!!!)
---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
zeltron
Posté le 31-01-2001 à 15:48:29
Pour des raisons de symetrie tu n'es pas oblige de monter jusqu'a premier-1 tu peux t'arreter a partie entiere de premier/2 voirsspartie entiere de (premier-1)/2 si premier > 4
Pour le petit fermat si tu fais reference au petit theoreme de fermat qui dit que:
si p est premier alors quelque soit a entier a^p est congru a a modulo pssje crains qu'il ne te soit pas d'une tres grande utilite car la reciproque est fausse cf le contre exemple celebre 2^341 -2 est divisble parss341 alors que 341 n'est pas premier.
Desole de pas avoir pu t'aiderss
a+ et bonne chance
verdoux
And I'm still waiting
Posté le 31-01-2001 à 15:53:20
zeltron a écrit a écrit :
Pour des raisons de symetrie tu n'es pas oblige de monter jusqu'a premier-1 tu peux t'arreter a partie entiere de premier/2 voirsspartie entiere de (premier-1)/2 si premier > 4
Il peut même se limiter à la partie entière de la racine carrée de p.
--Message édité par Verdoux--
zeltron
Posté le 31-01-2001 à 16:04:35
oui c'est tout a fait vrai !
Merci Verdoux d'avoir corrige.
--Message édité par zeltron--
Fred999
Rabat-joie
Posté le 31-01-2001 à 16:10:10
Ah oui, tu devrais aussi prévoir une sortie de boucle si le nombre n'est pas premier, avec un do...while par exemple.