test de primalité : erreur dans le code

test de primalité : erreur dans le code - VB/VBA/VBS - Programmation

Marsh Posté le 13-01-2003 à 21:37:33    

Voilà en maths spé on doit faire un truc pour vérifier la primalité (s'ils sont premiers  ou pas) de nombres.
J'ai essayé ave le code suivant, mais il y a une erreur :
15 est premier (c qui n'est pas le cas en réalité)
 

Citation :

Private Sub TextBox2_Change()
a = TextBox1.Value
d = 1
r = 1
Do
d = d + 1
r = a Mod d
Loop While (r <> 0 And d * d >= n)
If r <> 0 Then TextBox2.Value = " a est Premier " Else TextBox2.Value = " a n'est pas Premier "
End Sub


 
j'ai l'impression qu'il aime pas le modulo
 
Sinon, question con, comment faire un bouton 'Fermer' ??
 
 :)

Reply

Marsh Posté le 13-01-2003 à 21:37:33   

Reply

Marsh Posté le 13-01-2003 à 21:58:51    

avec les outils tu dessines un bouton ...
et comme code tu marques :
 
End
 
c tout ...

Reply

Marsh Posté le 13-01-2003 à 22:02:46    

Ha, Math spé, comme c'est loin... :whistle:  
 
Sous QBasic/Win2000, 15 n'est pas premier avec ce test.
 
Peut-être essayer avec un type forcé en mettant des % au bout des variables, ou en les définissant en integer au début (le variant est "spécial", jamais utilisé)
dim d as integer, a as integer, r as integer (ou des long)
 
Le test d * d >= n, c'est pas d% * d%  < a% ?


Message édité par Carbon_14 le 13-01-2003 à 22:33:51
Reply

Marsh Posté le 13-01-2003 à 22:02:57    

On fait du VB en MathSpe maintenant ? Quelle dechéance. A mon époque c'était du Caml !
 

Code :
  1. Loop While (r <> 0 And d * d >= n)


 
n n'est pas defini que je sache. Ce serait pas plustot (d*d < a) ?
 
Edit : Voici une version qui marche et calquée sur ton modèle. Mais c'est du Python car j'ai pas VB
 

Code :
  1. #!/usr/bin/env python
  2. import sys
  3. if len(sys.argv) <> 2:
  4.     print "Usage : %s <integer>" % sys.argv[0]
  5. else:
  6.     d = 1
  7.     a = int(sys.argv[1])
  8.     r = 1
  9.     while (r <> 0) and (d*d < a):
  10.         d += 1
  11.         r = a % d
  12.     if r <> 0:
  13.         print "Est premier"
  14.     else:
  15.         print "N'est pas premier"


Message édité par Kristoph le 13-01-2003 à 22:13:47
Reply

Marsh Posté le 13-01-2003 à 22:52:31    

Citation :

On fait du VB en MathSpe maintenant ? Quelle dechéance. A mon époque c'était du Caml !


 
en fait c'est plutôt spé math que maths spé  :D  
 

Citation :

Code :
  1. Loop While (r <> 0 And d * d >= n)


 
[quote]n n'est pas defini que je sache. Ce serait pas plustot (d*d < a) ?


 
oups...  :D  
 

Code :
  1. #!/usr/bin/env python
  2. import sys
  3. if len(sys.argv) <> 2:
  4.     print "Usage : %s <integer>" % sys.argv[0]
  5. else:
  6.     d = 1
  7.     a = int(sys.argv[1])
  8.     r = 1
  9.     while (r <> 0) and (d*d < a):
  10.         d += 1
  11.         r = a % d
  12.     if r <> 0:
  13.         print "Est premier"
  14.     else:
  15.         print "N'est pas premier"


 
euh... oui c sympa, mais je maitrise pas vraiment alors est ce que quelqu'un pourrait me convertir ça en VB ?
 
Merci tt le monde  :hello:  

Reply

Marsh Posté le 13-01-2003 à 23:26:32    

Je ne connais pas Python (quand j'étais en Spé, l'informatique n'"existait" pas, on jonglait avec la règle à calcul et la table de Log)
Ca doit être qq chose comme
 
Private Sub TextBox2_Change()
 
a% = TextBox1.Value
d% = 1
r% = 1
Do
  d% = d% + 1
  r% = a% Mod d%
Loop While ((r% <> 0) And (d% * d% < a%))
 
If r% <> 0 Then  
  TextBox2.Value = "a est Premier "  
Else  
  TextBox2.Value = "a n'est pas Premier "
end if
 
End Sub
 
sauf erreur.

Reply

Marsh Posté le 14-01-2003 à 12:33:05    

Ca marche parfaitement
 
Merci  :)

Reply

Sujets relatifs:

Leave a Replay

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