UN PETIT PROGRAMME DE CALCUL DES NOMBRE PREMIERS

mongol77 Messages postés 75 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 24 juin 2007 - 6 avril 2006 à 21:53
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 - 21 nov. 2006 à 14:35
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/36935-un-petit-programme-de-calcul-des-nombre-premiers

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
21 nov. 2006 à 14:35
oups...

mais comme je l'explique il ya d'autre méthodes:

Dim LastJ As long
For i = p To n Step 1
LastJ = Round((i - 1) / 2) + 2
For j = 2 To LastJ Step 1
If i Mod j = 0 Then Exit For
Next j
If j = LastJ then Print #1, i
Next i

Ensuite il est important sur ce type d'algo de gagner du temps
et la premiére des chose a faire c'est de déclarer le type des variables.
dans le cas contraire c'est variant qui est utilisé et ça veut dire une grosse chute de performance.
(ca a déjà été dit mais aucune correction n'as été aporter).
pour déclarer toutes tes variables en long :

Dim i As Long, n As Long, p As Long, j As Long
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
21 nov. 2006 à 13:06
Bonjour,

Malkuth, selon le code (Dim j,i,... as long, je suppose que c'est du VB6, donc pas de continue.
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
17 nov. 2006 à 21:28
pour info pour zapper la fin d'un FOR ... NEXT sans quitter la boucle on doit utiliser CONTINUE (qui continue la boucle...)

GOTO Fais vraiment sale dans un code et est moins facile pour relire le code.

Quand vous pensez que vous pouver pas faire autrement dite vous que des projet de plusieurs dizaines de miliers de ligne de code sont écrit sans faire appel a goto, que dans la plupart des cas le langage à des mécaniques pour faire sans, et dans le dernier recours un petit if devrait faire l'affaire.
cs_Axar Messages postés 19 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 12 juillet 2012
4 juil. 2006 à 16:04
salut ,juste une petite question combien de temps mets tu as trouvé les nombre de 1 à 1 000 000.
mouad001 Messages postés 21 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 5 août 2014
19 avril 2006 à 17:12
j'ai trouver une solution et je vais la montée dans le site au plutot le dimanche je vouq remercie pour vos commentaire
je vous aime tous !!!!
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 avril 2006 à 09:03
Pour la clareté du code préfere utiliser une variable de type boolean aulieu d'utiliser un Goto.

Je rajoute :
For j = 2 To Round((i - 1) / 2) + 1 Step 1
Teste même 4, 6, 8 alors que 2 a déjà tété testé.
mouad001 Messages postés 21 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 5 août 2014
9 avril 2006 à 09:05
merci pour la correction
exit for ne marchera pas car je veux pas que le nombre soit ecrit dans e fichier si je quitte la boucle
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 avril 2006 à 10:06
Correction :
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1

tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1

Il fallait lire

# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1

tu peux virer
# Close #1
# Open "c:\premier.txt" For Append As #1
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 avril 2006 à 10:05
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1

tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1

Met des noms plus explicite : n et p c'est quoi?

# Dim i, n, p, j As Long
Seul j est long le reste est Variant

# If i Mod j = 0 Then
# GoTo 1
# End If
# Next j
# Print #1, i
# 1: Next i
GOTO !!!!!!!!!!
Utilise Exit For
mongol77 Messages postés 75 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 24 juin 2007
6 avril 2006 à 21:53
bravo pour les fautes d'orthographe
Rejoignez-nous