VÉRIFIE SI UN NOMBRE EST PREMIER OU PAS

Signaler
Messages postés
287
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
18 janvier 2004
-
Messages postés
287
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
18 janvier 2004
-
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

Messages postés
287
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
18 janvier 2004

qui savent pas faire... Comme moi :D...
Modulo, ok je vais essayer...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
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
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

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 !"
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

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
Messages postés
287
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
18 janvier 2004

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)