Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VÉRIFIE SI UN NOMBRE EST PREMIER OU PAS


Information sur la source

Catégorie :VBA Niveau : Débutant Date de création : 09/12/2002 Date de mise à jour : 10/12/2002 17:23:02 Vu : 2 690

Note :
4 / 10 - par 3 personnes
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

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

Source

  • 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...
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... ;)    
 

Commentaires et avis

signaler à un administrateur
Commentaire de Vbsupernul le 10/12/2002 12:56:53

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)

signaler à un administrateur
Commentaire de 6Po le 10/12/2002 13:27:24

Arf!!!!!!!!!
Faire des test avec du TEXTE c'est tres mauvais.

Utilise le modulo
--&gt; 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

signaler à un administrateur
Commentaire de 6Po le 10/12/2002 13:40:55

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 &lt; 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 &lt;&gt; 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 !"

signaler à un administrateur
Commentaire de DARKSIDIOUS le 10/12/2002 13:48:10 administrateur CS

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

signaler à un administrateur
Commentaire de Vbsupernul le 10/12/2002 15:42:52

qui savent pas faire... Comme moi :D...
Modulo, ok je vais essayer...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.