begin process at 2012 02 16 18:56:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > VÉRIFIE SI UN NOMBRE EST PREMIER OU PAS

VÉRIFIE SI UN NOMBRE EST PREMIER OU PAS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : Vbsupernul

Ecrire un message privé
Site perso
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... ;)    


 Sources du même auteur

Source avec Zip CALCULATEUR DE RÉVEILLON
Source avec Zip Source avec une capture JE PENSE À UN NOMBRE.... VERSION 1.6:AJOUT D'UNE FONCTION CH...
Source avec Zip CRYPTEUR DE TEXTE SIMPLE VERSION AMÉLIORÉE (C'ÉTAIT PAS TROP...
Source avec Zip UTILITAIRE DE PERSONALISATION DU SYSTEME

 Sources de la même categorie

Source avec Zip Source avec une capture OUTLOOK ATTACHEMENT SAVER par MoiLafouine
Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert

Commentaires et avis

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)

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

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 !"

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

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales