Algorithme VRAIMENT basic qui ne marche pas

Algorithme VRAIMENT basic qui ne marche pas - Programmation

Marsh Posté le 31-01-2001 à 14:34:26    

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

Reply

Marsh Posté le 31-01-2001 à 14:34:26   

Reply

Marsh Posté le 31-01-2001 à 15:04:41    

Le raisonnement est évidemment bon
 
Il ne manque pas des trucs genre NEXT et END IF???

Reply

Marsh 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 ?

Reply

Marsh 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 :D (end if du if pas mal hein!!!)


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh 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

Reply

Marsh 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--

Reply

Marsh Posté le 31-01-2001 à 16:04:35    

oui c'est tout a fait vrai !
 
Merci Verdoux d'avoir corrige.

 

--Message édité par zeltron--

Reply

Marsh 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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed