NOMBRES PREMIERS

cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006 - 1 mai 2005 à 12:35
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 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.

https://codes-sources.commentcamarche.net/source/31113-nombres-premiers

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 8 Date d'inscription samedi 28 décembre 2002 Statut Membre Derniè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és 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 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)

voila quelques ameliorations :p
++
Rejoignez-nous