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

Macros et VBA Excel Discussion :

Code pour décomposer le nombre "52" présent en "A3" en nombres premiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Points : 57
    Points
    57
    Par défaut Code pour décomposer le nombre "52" présent en "A3" en nombres premiers
    Bonjour à tout le forum,


    Je bloque sur un petit exercice, à savoir :

    Dans la cellule "A3" j'ai le nombre "52", je souhaiterais avoir dans la ligne G (par exemple) tous les nombres premiers qui composent ce nombre 52.

    Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (qui sont alors 1 et lui-même).
    L'ensemble des nombres premiers présents dans 52 sont : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47


    Pensez-vous qu'un code VBA est réalisable pour cela ?

    Je vous remercie vraiment pour votre aide,

    Bonne fin de journée,

    Fabien
      0  0

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Et à quel niveau se situe ton problème ?
    - celui de l'extraction des nombres premiers inclus dans l'intervalle 1 - 52
    ou
    - la détermination de ceux qui "composent" 52 ?
    Et à ce propos : qu'entends-tu exactement par "composent" ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Points : 57
    Points
    57
    Par défaut
    Bonjour unparia,

    Merci pour ta réponse.

    Mon problème se situe au niveau de l'extraction des nombres premiers qui sont présents dans la cellule "A3" (donc dans le nombre 52). Je tourne vraiment en rond.

    Ce que j'entends par "les nombres premiers qui composent 52", ce sont tous les nombres premiers présents dans l'intervalle "0 à 52".
      0  1

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bon
    Il existe de nombreuses manières de faire cette extraction.
    En voici une, entre autres :
    un tableau dimensionné à 52 dont tu mets tous les éléments à false
    tu pars du chiffre 2 et mets à True tous ses multiples, jusqu'à 52 (ses multiples correspondront très exactement à leur index dans le tableau)
    - tu passes au suivant et refais la même chose avec ses multiples
    etc ...
    tous ceux qui, dans ton tableau, seront restés à False seront forcément des nombres premiers.
    Voilà un mécanisme (parmi d'autres, une autre fois).
    Montre-nous s'il te plait comment tu le mets (au moins tentes de le mettre) en oeuvre.
    Je n'interviendrai au besoin à nouveau qu'après cet effort.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Salut,

    Utilisation de MOD ?

    A+
      0  0

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour OBO29
    Egalement envisageable, mais alors forcément plus lent.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par fabien32200 Voir le message
    Pensez-vous qu'un code VBA est réalisable pour cela ?
    Oui et ce facilement car c'est du niveau débutant et n'est pas inhérent au langage mais juste à une simple logique !

    La question est : quelle stratégie dois-tu appliquer (quel algorithme) ?

    Conformément aux règles de ce forum, une fois la logique acquise, commence donc ton code
    et ensuite si tu rencontres une difficulté technique inhérente au langage (donc indépendante de la logique)
    publie ici ton code entrepris accompagné d'une explication quant à cette difficulté technique …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
      1  1

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Quelle que soit la stratégie adoptée, le crible classique exposé par unparia ou le Modulo évoqué par OBO29,
    pour un nombre aussi petit le résultat sera instantané et même avec des nombres à quatre chiffres !

    unparia, j'ai testé deux versions Modulo et comme il ne s'agit que de vérifier les nombres impairs
    avec comme diviseurs les nombres impairs premiers précédents déjà trouvés, c'est rapide …

    _________________________________________________________________________________________________________
    Heureux l'étudiant qui, comme la rivière, suit son cours sans quitter son lit …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
      0  1

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour OBO29
    Egalement envisageable, mais alors forcément plus lent.
    Bonjour,

    j'ai testé les 2 codes (sans optimiser autant que Marc-L) et ta solution est à 7/15ms là où la mienne donne du 30/40ms.
    Effectivement, la tienne est plus rapide et la mienne plus longue .

    Par contre, j'ai trouvé ma solution plus facile à coder pour un débutant.

    A+
      0  0

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Par contre, j'ai trouvé ma solution plus facile à coder pour un débutant
    Il suffit alors de se contenter (c'est au moins mérité) de faire comme tu le fais.
    Amitiés
    Pour ton information : la plupart des développeurs ne perdent pas leur temps à une telle détermination. Ils préfèrent avoir en mémoire une table des nombres premiers (chargée) et la consulter en tant que de besoin.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  11. #11
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Tests xl2003, Seven, i5 2.5GHz, affichage dans les cellules compris :

    Pour le nombre 52 :

    Crible . . : 0,000s
    Modulo1 : 0,000s
    Modulo2 : 0,000s … (résultats identiques pour le nombre 195)

    Pour le nombre 9 999 :

    Crible . . : 0,016s
    Modulo1 : 0,031s
    Modulo2 : 0,047s

    Donc imperceptible à l’œil …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
      0  1

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re
    bonsoir chez moi 0 secondes jusqu'à 800 avec mod (2 to nombre-1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Est_un_nombre_Premier(nombre As Long) As Boolean
    Dim div As Long
    For div = 2 To nombre - 1
    If nombre Mod div = 0 Then Est_un_nombre_Premier = False: Exit Function ' permet aussi de sortir a false si c'est le cas (gain de temps )
    Next
    Est_un_nombre_Premier = True
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Dim i As Long, T
    T = Timer
    For i = 1 To 800 '900
    If Est_un_nombre_Premier(i) Then N = N & " " & i
    Next
    T = Timer - T
    Debug.Print N
    Debug.Print "calculé en " & T & " secondes"
    End Sub
    voila

    re
    la même (sans mod mais avec le vrai calcul et comparaison avec le "fix"du résultat )est un peu plus lente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Est_un_nombre_Premier2(nombre As Long) As Boolean
    Dim div As Long
    For div = 2 To nombre - 1
    If (nombre / div) = Fix(nombre / div) Then Est_un_nombre_Premier2 = False: Exit Function
    Next
    Est_un_nombre_Premier2 = True
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test2()
    Dim i As Long, T
    T = Timer
    For i = 1 To 800 '900
    If Est_un_nombre_Premier2(i) Then N = N & " " & i
    Next
    T = Timer - T
    Debug.Print N
    Debug.Print "calculé en " & T & " secondes"
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter
      0  1

  13. #13
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Dis Patrick d'après toi, pourquoi personne n'avait posté de code ?‼
    Vu qu'on attendait des nouvelles du code entrepris par l'étudiant …

    Pas grave comme tes codes ne sont pas du tout optimisés !

    Avec le modulo il faut uniquement tester les impairs premiers déjà trouvés en tant que diviseurs
    et ce en se limitant au tiers de n, il est inutile de tout tester de 3 à n ! (n étant le nombre à tester)

    De mon côté je suis toujours à 0,000s avec le modulo pour 5 850 mais plus pour 5 900 …

    Edit : avec le crible classique exposé par unparia je suis à 0,000s jusqu'à 7 100.
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
      0  1

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    et ce en se limitant au tiers de n
    A la racine carrée non ?
    Ca beaucoup moins de valeurs encore.
    eric
      1  0

  15. #15
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    pour la racine carrée

    J'interviens en invité, je suis avec intérêt cette discussion (ah ! Mersenne, Erathostène, que de vieux souvenirs )


    Tant qu'on doit pas élargir aux dénominateurs premiers communs, avec PGDC et PPCM ... les douloureux souvenirs devraient être supportables
      0  1

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Euh ...
    Et si on abandonnait à "son sort" une question qui ne mérite un réel intérêt que si l'on recherche (il y a pour cela des concours) le nombre premier plus grand que le plus grand nombre premier connu à ce jour ?
    Ce sera peut-être bien. Le reste n'est que futilité dans ce domaine ...
    Il est maintenant pour moi assez clair qu'un exercice a été là donné à un étudiant.
    Nous l'avons déjà guidé (aurions-nous du ?). Cela devrait suffire, non ?

    EDIT : je n'ai pas manqué, personnellement, d'être choqué par un titre :
    décomposer le nombre "52" présent en "A3" en nombres premiers
    qui, à lui seul, met en exergue une certaine "clarté" d'esprit.
    A partir de là ... j'ai personnellement peu envie de contribuer à alimenter le flou le plus artistique.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    hiers j'ai essayé la suggestion de unparia
    en effet c'est rapide
    mais revient a lister tout les nombres impairs avec la base 1 et fin 52 dans cet exemple
    parti de la

    le nombre premier ne sont divisible que par 1 ou lui même ce sont donc forcement des impairs
    sachant ca je vois vraiment pas pourquoi on irais chercher "sqr" et tout le reste
    entre nous ma fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    ends = 52
    N = "1 2 "
    For i = 3 To ends Step 2
    N = N & i & " "
    Next
    Debug.Print Trim(N)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter
      0  2

  18. #18
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour tout le monde,

    @patrick :
    Ta dernière méthode classe, entres autres 15 et 25 comme Nb premiers.

    @Marc-L :
    Qu'est ce que tu appelles Modulo2 ? je ne trouve pas de documentation à ce sujet.

    @tous : la bonne journée!
    Cordialement,
    Franck
      0  1

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour patricktoulon
    Il me semble que cet étudiant n'est pas un candidat à un concours général, qu'il lui est alors simplement demandé de faire un exercice et montrer ainsi qu'il sait "manier" tel ou tel autre procédé (j'en arrive presque à regretter que des procédés lui aient été indiqués).
    Je regrette personnellement encore plus vivement que des lignes de code lui aient été montrées...
    Sur ce : je vais à la pêche ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re
    @patrick :
    Ta dernière méthode classe, entres autres 15 et 25 comme Nb premiers.
    oui c'est vrai tu a raison j'ai meme pas regardé

    mais je ne fait que suivre l'idée de unparia avec son tableau

    perso je préfère ma version avec modulo précédemment proposé n'en déplaise a quiconque

    et puis entre nous on a des outils je ne vois pas pourquoi on s'en servirais pas

    re
    si tu va a la pèche en mer ramène moi 2 dorades

    quand marc dit il suffit de tester avec le tiers de n (n etant les impairs déjà trouver )
    est ce que c'est ce procédé qu'il parle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Est_un_nombre_Premier(nombre As Long, f) As Boolean
    Dim div As Long
    For div = 2 To f
    If nombre Mod div = 0 Then Est_un_nombre_Premier = False: Exit Function ' permet aussi de sortir a false si c'est le cas (gain de temps )
    Next
    Est_un_nombre_Premier = True
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub test()
    Dim i As Long, T
    T = Timer
    oldnombre = 1
    For i = 1 To 800 '900
    If Est_un_nombre_Premier(i, oldnombre) Then N = N & " " & i: oldnombre = i / 3
    Next
    T = Timer - T
    Debug.Print N
    Debug.Print "calculé en " & T & " secondes"
    End Sub
    ca semble fonctionner mais j'ai quand même le chiffre 4 qui persiste
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter
      0  1

Discussions similaires

  1. VB6, code pour éffectuer la racine carré d'un nombre
    Par nap91 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2011, 13h20
  2. Réponses: 7
    Dernier message: 21/10/2010, 13h30
  3. Réponses: 1
    Dernier message: 08/04/2009, 12h17
  4. [Visual Fortran 5.0] Problème pour décomposer un code
    Par laabidimhe dans le forum Fortran
    Réponses: 3
    Dernier message: 17/12/2008, 23h29

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