VÉRIFIE SI UN NOMBRE EST PREMIER OU PAS

Vbsupernul Messages postés 287 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 18 janvier 2004 - 10 déc. 2002 à 12:56
Vbsupernul Messages postés 287 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 18 janvier 2004 - 10 déc. 2002 à 15:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5300-verifie-si-un-nombre-est-premier-ou-pas

Vbsupernul Messages postés 287 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 18 janvier 2004
10 déc. 2002 à 15:42
qui savent pas faire... Comme moi :D...
Modulo, ok je vais essayer...
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 déc. 2002 à 13:48
C'est que le code est un peu long, et l'utilisation des modulo t'aurais éviter quelques lignes, mais c'est tout de même intéressant pour ceux qui ne savent pas comment faire.

DARK SIDIOUS
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
10 déc. 2002 à 13:40
Pour je poste vi une source que j'ai fait en 5 min


Il faut aussi crée un textbox avec le nom text1 pour donne la valeur

Ce code est a mettre sur un bouton.

Dim n As Long
Dim i As Long
Dim racine2n As Long

n = CLng(Val(Text1.Text))

'CAS DE BOARD
If n 0 Or n 1 Then MsgBox "0 et 1 ne sont pas des nombres premiers": Exit Sub

'SI UN POYO MET UN NOMBRE NEGATIF
If n < 0 Then n = n * -1

'ON FAIT LE TEST A CAUSE DU 2
'VU QUE LA BOUCLE FOR COMMENCE A 3
If n Mod 2 = 0 Then
If n <> 2 Then
MsgBox Str(n) + " est pas un nombre premier car divisible par 2!"
Exit Sub
Else
MsgBox Str(n) + " est un nombre premier !"
Exit Sub
End If
End If

'LA RACINE CARREE DE N
racine2n = Sqr(n)

'LA BOUCLE DE TESTS
For i = 3 To racine2n Step 2
If n Mod i = 0 Then
MsgBox Str(n) + " est pas un nombre premier car divisible par " + CStr(i) + " !"
Exit Sub
End If
Next i

'SI ON ARRIVE ICI C'EST QUE LE NOMBRE EST PREMIER (SAUF 2)
MsgBox Str(n) + " est un nombre premier !"
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
10 déc. 2002 à 13:27
Arf!!!!!!!!!
Faire des test avec du TEXTE c'est tres mauvais.

Utilise le modulo
--> Modulo retourne le reste d'une division donc 5 / 2 = 2 reste 1
5 Mod 2 = donc 1

Si tu fais un test
IF nbaverifier mod diviseur = 0 ca veut dire que diviseur et un multiple de nbaverifier

et bon ton code n'est pas tres net :p
Vbsupernul Messages postés 287 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 18 janvier 2004
10 déc. 2002 à 12:56
Je vais me faire insulter, y a une autre source bokou + courte sur le site...
Dommage avec Integer ça monte pas très haut (le nombre max)