Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 540 fois - Téléchargée 39 fois
Sub premierOrNotPremierThatIsTheQuestion() ' ' premierOrNotPremierThatIsTheQuestion Macro ' Macro enregistrée le 09/12/2002 par Vbsupernul ' ' premierounon2 = InputBox("Entrez le nombre à vérifier") premierounon3 = premierounon2 + 1 If premierounon2 = "1" Or premierounon2 = "2" Then MsgBox ("Pas premier"), vbCritical Exit Sub End If If Right(premierounon2, 1) = 2 Or Right(premierounon2, 1) = 4 Or Right(premierounon2, 1) = 6 Or Right(premierounon2, 1) = 8 Then 'regarde si le dernier chiffre est pair MsgBox (premierounon2 & " n'est pas un nombre premier, il est divisible par 2"), vbCritical Exit Sub ElseIf Right(premierounon2, 1) = 0 Then MsgBox (premierounon2 & " n'est pas un nombre premier, il est divisible par 2 et 5"), vbCritical Exit Sub ElseIf Right(premierounon2, 1) = 5 Then MsgBox (premierounon2 & " n'est pas un nombre premier, il est divisible par 5"), vbCritical Exit Sub End If diviseur = "2" ledebut: resultat = premierounon2 / diviseur 'divise par diviseur If InStr(resultat, ",") <> 0 Then 'si c décimal GoTo debut 'va à début End If If InStr(resultat, ",") = 0 Then 'sinon, c'est premier MsgBox (premierounon2 & " est un nombre premier"), vbCritical Exit Sub End If debut: diviseur = diviseur + 1 'ben là, ajoute 1 au diviseur If diviseur < premierounon3 Then 'vérifie que le diviseur est pas + grand que le nb à vérifier GoTo ledebut End If If diviseur = premierounon3 Then MsgBox (premierounon2 & " est un nombre premier") Exit Sub End If If diviseur > premierounon3 Then MsgBox (premierounon2 & " est un nombre premier") Exit Sub End If End Sub 'c assez basik, je commente juste un peu Sub premierOrNotPremierThatIsTheQuestion() ' ' premierOrNotPremierThatIsTheQuestion Macro ' Macro enregistrée le 09/12/2002 par Vbsupernul ' ' Sub premierOrNotPremierThatIsTheQuestion() ' ' premierOrNotPremierThatIsTheQuestion Macro ' Macro enregistrée le 09/12/2002 par Vbsupernul ' ' Dim nbaverifier As Double Dim diviseur As Double Dim resultat As Double nbaverifier = InputBox("Entrez le nombre à vérifier") racinenbaverifier = Sqr((nbaverifier) + 1) premierounon3 = nbaverifier If nbaverifier = "1" Or nbaverifier = "2" Then MsgBox ("Pas premier"), vbCritical Exit Sub End If If Right(nbaverifier, 1) = 2 Or Right(nbaverifier, 1) = 4 Or Right(nbaverifier, 1) = 6 Or Right(nbaverifier, 1) = 8 Then MsgBox (nbaverifier & " n'est pas un nombre premier, il est divisible par 2"), vbCritical Exit Sub ElseIf Right(nbaverifier, 1) = 0 Then MsgBox (nbaverifier & " n'est pas un nombre premier, il est divisible par 2 et 5"), vbCritical Exit Sub ElseIf Right(nbaverifier, 1) = 5 Then MsgBox (nbaverifier & " n'est pas un nombre premier, il est divisible par 5"), vbCritical Exit Sub End If diviseur = 3 ledebut: resultat = nbaverifier Mod diviseur If resultat <> 0 Then GoTo debut End If If resultat = 0 Then MsgBox (nbaverifier & " n'est pas un nombre premier, il est divisible par " & diviseur), vbCritical, nbaverifier & " n'est pas premier" MsgBox ("Le résultat est " & nbaverifier / diviseur) Exit Sub End If debut: diviseur = diviseur + 2 If diviseur = 5 Or diviseur = 9 Then diviseur = diviseur + 2 End If If diviseur >= racinenbaverifier Then MsgBox (nbaverifier & " est un nombre premier"), vbInformation, "Il est premier, my dear" Exit Sub End If If diviseur < racinenbaverifier Then GoTo ledebut End If 'là ça marche mieux :D 'j'ai laissé l'ancienne version, g pas le courage de refaire les commentaires...
Modulo, ok je vais essayer...
DARK SIDIOUS
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 !"
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
Dommage avec Integer ça monte pas très haut (le nombre max)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.