Vérifie si un nombre est premier ou pas

Contenu du snippet

Ben c une macro Excel qui vérifie si un nb est ou non premier...

Source / Exemple :


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

Conclusion :


Ben voilà, c assez nul comme code, et ça peut surement être améliorée...
Version 4 (déjà), ben voilà, j'ai mis le modulo à la place de la division ;)
Maintenant c plutot rapide... ;)

A voir également

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.