NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
30 mars 2006 à 08:21
Utilisateur anonyme -
1 déc. 2007 à 19:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Pour être plus précis et pour raccourcir considérablement le temps de recherche tu peux te limiter à la racine carré du nombre que tu veux tester, en plus ton code est pas très clair...
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 1 avril 2006 à 20:58
Bonjour,
En ce qui concerne l'algorithme mathématique, on peut dire qu'il en existe des biens mieux programmés si VBF... et, je trouve dommage que pour une simple recherche de nb premier, d'avoir un listing si long... je crois que tu devrais revoir la partie concernant la recherche des nb premiers... Faut mieux savoir bien programmer l'essentiel, que toute la floriture autour...
Bonne programmation et bon courage,
Amicalement,
Us.
chewbaka62
Messages postés67Date d'inscriptionmardi 1 novembre 2005StatutMembreDernière intervention30 juillet 2006 1 avril 2006 à 11:06
Oui je sais mais c'est pour m'imprégner des nouveautés de la plateforme .Net que j'essaie d'être rigoureux.
Merci quand-même
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 31 mars 2006 à 14:51
Tu peux remplacer System.Int32 par Integer.
chewbaka62
Messages postés67Date d'inscriptionmardi 1 novembre 2005StatutMembreDernière intervention30 juillet 2006 31 mars 2006 à 14:47
Bonjour Hijakhakker,
Tout à fait d'accord avec toi. Erreur de débutant tout simplement.
Merci pour ta remarque.
hijakhakker
Messages postés7Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention17 décembre 2007 30 mars 2006 à 22:45
For intCompteur1 = 1 To CInt(strNombre) Step 1
If intCompteur Mod intCompteur1 = 0 Then
intDiviseur += 1
tu fais du test meme sur des nombre paire puisqu step=1?
pourquoi ne pas seulement diviser juste sur les nombre impaire inferieur au nombre saisi divisé par 2? tu peut economiser jusqu'a 75%du temps avec d autre methode
chewbaka62
Messages postés67Date d'inscriptionmardi 1 novembre 2005StatutMembreDernière intervention30 juillet 2006 30 mars 2006 à 16:10
Pour BruNews...
Bonjour,
j'ai bien vérifié que le sujet ne fera pas doublon et je savais bien qu'il le ferait. Mais c'est volontaire si j'ai posté ce code car le but pour un débutant est d'apprendre des autres. Ceci dit, si ça pose tant de problème de poster de manière itérative un même sujet, je ne le ferai plus. Encore désolé de vous avoir dérangé.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 30 mars 2006 à 13:21
Je pense que le sujet des nombres premiers a largement été traité sur vbfrance, il n'est pas indispensable d'en rajouter.
Avant de poser une source, il convient de vérifier si elle ne fera pas doublon (voir plus comme ici).
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mars 2006 à 12:57
Tu peux même ne boucler que jusqu'à Nb/2 puisque le reste ne donnera que des diviseurs inférieurs à 2
chewbaka62
Messages postés67Date d'inscriptionmardi 1 novembre 2005StatutMembreDernière intervention30 juillet 2006 30 mars 2006 à 11:43
Bonjour,
Merci pour ta remarque mais comme justement ma boucle interne commence avec le chiffre 1, celui-ci est d'office pris comme diviseur de tous les nombres. Donc, 6 aura 3 diviseurs ( 1,2 et 3 ) et ne sera donc pas pris comme nombre premier. Tu peux tester le programme et constater qu'il donne rigoureusement tous les nombres premiers. Je retiens néanmoins ta suggestion pour gagner en temps de calcul car je suis ici pour apprendre.
Joseph
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 30 mars 2006 à 08:21
Bonjour
# ' Si le nombre de diviseur est de 2, il s'agit d'un nombre premier et on l'ajoute à la ListBox
# If intDiviseur = 2 Then
# lstNombresPremiers.Items.Add(intCompteur)
# End If
6 a 2 et 3 comme diviseur, mais il n'est pas un nombre premier.
De plus, ta boucle
For intCompteur = 1 To CInt(strNombre) Step 1
Test tous les nombres de 1 à Nb-1
Alour que tu peux commencer à 2 et passer a 3, 5, 7, 9 etc, cela te fera gagner bcp de temps de calcul.
1 déc. 2007 à 19:00
1 avril 2006 à 20:58
En ce qui concerne l'algorithme mathématique, on peut dire qu'il en existe des biens mieux programmés si VBF... et, je trouve dommage que pour une simple recherche de nb premier, d'avoir un listing si long... je crois que tu devrais revoir la partie concernant la recherche des nb premiers... Faut mieux savoir bien programmer l'essentiel, que toute la floriture autour...
Bonne programmation et bon courage,
Amicalement,
Us.
1 avril 2006 à 11:06
Merci quand-même
31 mars 2006 à 14:51
31 mars 2006 à 14:47
Tout à fait d'accord avec toi. Erreur de débutant tout simplement.
Merci pour ta remarque.
30 mars 2006 à 22:45
If intCompteur Mod intCompteur1 = 0 Then
intDiviseur += 1
tu fais du test meme sur des nombre paire puisqu step=1?
pourquoi ne pas seulement diviser juste sur les nombre impaire inferieur au nombre saisi divisé par 2? tu peut economiser jusqu'a 75%du temps avec d autre methode
30 mars 2006 à 16:10
Bonjour,
j'ai bien vérifié que le sujet ne fera pas doublon et je savais bien qu'il le ferait. Mais c'est volontaire si j'ai posté ce code car le but pour un débutant est d'apprendre des autres. Ceci dit, si ça pose tant de problème de poster de manière itérative un même sujet, je ne le ferai plus. Encore désolé de vous avoir dérangé.
30 mars 2006 à 13:21
http://www.google.com/custom?domains=vbfrance.com&q=%22nombres+premiers%22&sa=Rechercher&sitesearch=vbfrance.com
Je pense que le sujet des nombres premiers a largement été traité sur vbfrance, il n'est pas indispensable d'en rajouter.
Avant de poser une source, il convient de vérifier si elle ne fera pas doublon (voir plus comme ici).
30 mars 2006 à 12:57
30 mars 2006 à 11:43
Merci pour ta remarque mais comme justement ma boucle interne commence avec le chiffre 1, celui-ci est d'office pris comme diviseur de tous les nombres. Donc, 6 aura 3 diviseurs ( 1,2 et 3 ) et ne sera donc pas pris comme nombre premier. Tu peux tester le programme et constater qu'il donne rigoureusement tous les nombres premiers. Je retiens néanmoins ta suggestion pour gagner en temps de calcul car je suis ici pour apprendre.
Joseph
30 mars 2006 à 08:21
# ' Si le nombre de diviseur est de 2, il s'agit d'un nombre premier et on l'ajoute à la ListBox
# If intDiviseur = 2 Then
# lstNombresPremiers.Items.Add(intCompteur)
# End If
6 a 2 et 3 comme diviseur, mais il n'est pas un nombre premier.
De plus, ta boucle
For intCompteur = 1 To CInt(strNombre) Step 1
Test tous les nombres de 1 à Nb-1
Alour que tu peux commencer à 2 et passer a 3, 5, 7, 9 etc, cela te fera gagner bcp de temps de calcul.