IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vos contributions VB6 Discussion :

Savoir si un nombre est premier


Sujet :

Vos contributions VB6

  1. #1
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut Savoir si un nombre est premier
    Bonjour,

    J'ai fait un petit projet qui sert à trouver les nombres premiers. Je crois que la fonction peut être utile à d'autres personnes d'ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Function IsPrime(ByVal Number As Double) As Boolean
        ' Compteur
        Dim i As Double
        ' Nombre
        Dim d As Double
     
        ' Trois nombres ne seront pas pris en compte par le compteur, on s'organise pour
        ' qu'ils soient vus avant.
        Select Case Number
            Case 0
                IsPrime = False
                Exit Function
            Case 1
                IsPrime = False
                Exit Function
            Case 2
                IsPrime = True
                Exit Function
        End Select
     
        ' Voici la boucle.
        ' Pas besoin de commencer à 1 et de finir au nombre, 3 et la racine du nombre
        ' font bien l'affaire
        For i = 2 To Int(Sqr(Number)) + 1
            d = Number / i
            If d = Int(d) Then
                IsPrime = False
                Exit Function
            End If
        Next i
     
        ' Verdict ?
        IsPrime = True
    End Function
    J'ai trouvé les nombres premiers de 0 à 10,000 en 93ms.

    J'aimerais savoir ce que vous en pensez,

    Thunder

  2. #2
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Ce ne serait pas plus simple de regarder si le modulo d'un nombre par un autre est nul plutôt que de comparer le résultat de la division et la partie entière du résultat ?

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  3. #3
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    J'y avais pensé, mais il me sortait, comme nombre premiers, des nombres comme 9 et 25.

  4. #4
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par ThunderStroke
    J'y avais pensé, mais il me sortait, comme nombre premiers, des nombres comme 9 et 25.



    Je regarde ça et je te redis...

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  5. #5
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bon je viens de regarder.

    Avec le modulo j'ai aucun problème 9 et 25 sont reconnus comme des nombre non premiers

    Voici le code que j'ai fait à partir du tien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For i = 2 To Int(Sqr(Number)) + 1
    '        d = Number / i   'ton code
            d = Number Mod i
    '        If d = Int(d) Then   'ton code
            If d = 0 Then
                IsPrime = False
                Exit Function
            End If
        Next i
    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

Discussions similaires

  1. Comment savoir si un nombre est premier ?
    Par fearyourself dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h20
  2. Comment savoir si un nombre est premier ?
    Par Extra-Nitro dans le forum Général Python
    Réponses: 9
    Dernier message: 03/01/2006, 14h28
  3. Déterminer si un nombre est premier
    Par Fandefruit dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2005, 10h52
  4. savoir si un nombre est pair ou non
    Par shirya dans le forum C++
    Réponses: 25
    Dernier message: 23/11/2005, 17h53
  5. Réponses: 4
    Dernier message: 30/06/2002, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo