cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 septembre 2006
-
1 mai 2005 à 12:35
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
5 mai 2005 à 02:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 02:04
J'y vais... j'y vais...
Encore une dernière remarque :
Tu déclare BI, puis tu défini BI avec la valeur de Text1... Bon, trés bien... Je suppose que BI, c'est pour Borne Inférieure... L'ennui c'est qu'ensuite BI n'est jamais plus utilisé... En d'autre terme, on peut effacer les deux lignes où BI apparaît...
A se demander, si le code est complet...
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 01:51
A bon, aller... encore moi... (après je dors...)
Tu écris :
Test = Nb Mod Compteur
If Test = 0 Then
Flag = 0
End If
IL serait plus "propre" d'écrire : (p'être plus rapide aussi...)
If (Nb Mod Compteur)=0 then Flag=0
Et on économise la déclaration de la variable Test, en prime...
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 01:41
Je continue un peu...
Si on reprends le début, on aurait la même chose avec :
Dim BI, BS, I, Nb, Compteur, Flag, Test As Long
List1.Clear
BI = Val(Text1.Text)
BS = Val(Text2.Text)
I=2
A+
Amicalement,
Us.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 01:37
Encore un truc...
Tu écris :
Do Until I > BS
Nb = I
Compteur = 2
Flag = 1
Donc dés le début Flag=1... Pourquoi pas... (pour l'instant j'ai pas regardé la suite...)
Mais, alors se pose toute de suite la question : Pourquoi avoir Flag à zéro ?... juste avant...
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 01:33
JE bafouille...
Y'a encore un truc qui sert vraiment à rien :
I = BI
puisque toute de suite aprés tu passe I dans la fameuse boucle While ! donc tu met I à 2... alors, je me demande à quoi est-ce utile d'avoir mis juste avant I=BI ? ... C'est une perte de temps...
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 mai 2005 à 01:28
Ouille.... tu fais quoi avec ça ?
Do While I < 2
Flag = 0
I = I + 1
Loop
Car, au final tu auras toujours comme résultat :
Flag=0
I=2
Il est inutile donc inutile d'utiliser une boucle !
cs_nounours75
Messages postés8Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention 1 mai 2005 1 mai 2005 à 17:34
Bonjour,
Je pense qu'il y a quelques problèmes. J'ai essayé avec mini =1 et maxi =15.
La liste m'indique que 2, 3, 5, 7, 11 et 13 sont des nombres premiers ce qui est correct ; par comtre il m'indique aussi 4, 6, 8, 9 et 15 et là je pense que c'est faux (ou alors je n'ai rien compris)
De plus ton programme n'indique pas 1 dans la liste des premiers
Petite astuce : pour optimiser ton programme il est préférable de commencer par un nombre impair et incrémenter ta boucle de 2 puisque, par définition, à l'exception de 2 un nombre pair ne peut pas être premier
Courage
cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 septembre 2006 1 mai 2005 à 12:35
salut
visiblement tu incrémente Nb, mais je crois que au dela d'une certaine limite, les nombres premiers sont de la forme ik+j, avec i et j constante et j<i mais que je me rapelle plus
ensuite, compteur n'a pas besoin d'aller jusqu'a Nb, mais jusqu'a int(sqr(Nb)) (propriété des nombre premier)
5 mai 2005 à 02:04
Encore une dernière remarque :
Tu déclare BI, puis tu défini BI avec la valeur de Text1... Bon, trés bien... Je suppose que BI, c'est pour Borne Inférieure... L'ennui c'est qu'ensuite BI n'est jamais plus utilisé... En d'autre terme, on peut effacer les deux lignes où BI apparaît...
A se demander, si le code est complet...
5 mai 2005 à 01:51
Tu écris :
Test = Nb Mod Compteur
If Test = 0 Then
Flag = 0
End If
IL serait plus "propre" d'écrire : (p'être plus rapide aussi...)
If (Nb Mod Compteur)=0 then Flag=0
Et on économise la déclaration de la variable Test, en prime...
5 mai 2005 à 01:41
Si on reprends le début, on aurait la même chose avec :
Dim BI, BS, I, Nb, Compteur, Flag, Test As Long
List1.Clear
BI = Val(Text1.Text)
BS = Val(Text2.Text)
I=2
A+
Amicalement,
Us.
5 mai 2005 à 01:37
Tu écris :
Do Until I > BS
Nb = I
Compteur = 2
Flag = 1
Donc dés le début Flag=1... Pourquoi pas... (pour l'instant j'ai pas regardé la suite...)
Mais, alors se pose toute de suite la question : Pourquoi avoir Flag à zéro ?... juste avant...
5 mai 2005 à 01:33
Y'a encore un truc qui sert vraiment à rien :
I = BI
puisque toute de suite aprés tu passe I dans la fameuse boucle While ! donc tu met I à 2... alors, je me demande à quoi est-ce utile d'avoir mis juste avant I=BI ? ... C'est une perte de temps...
5 mai 2005 à 01:28
Do While I < 2
Flag = 0
I = I + 1
Loop
Car, au final tu auras toujours comme résultat :
Flag=0
I=2
Il est inutile donc inutile d'utiliser une boucle !
1 mai 2005 à 17:34
Je pense qu'il y a quelques problèmes. J'ai essayé avec mini =1 et maxi =15.
La liste m'indique que 2, 3, 5, 7, 11 et 13 sont des nombres premiers ce qui est correct ; par comtre il m'indique aussi 4, 6, 8, 9 et 15 et là je pense que c'est faux (ou alors je n'ai rien compris)
De plus ton programme n'indique pas 1 dans la liste des premiers
Petite astuce : pour optimiser ton programme il est préférable de commencer par un nombre impair et incrémenter ta boucle de 2 puisque, par définition, à l'exception de 2 un nombre pair ne peut pas être premier
Courage
1 mai 2005 à 12:35
visiblement tu incrémente Nb, mais je crois que au dela d'une certaine limite, les nombres premiers sont de la forme ik+j, avec i et j constante et j<i mais que je me rapelle plus
ensuite, compteur n'a pas besoin d'aller jusqu'a Nb, mais jusqu'a int(sqr(Nb)) (propriété des nombre premier)
voila quelques ameliorations :p
++