cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012
-
10 déc. 2002 à 14:14
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
4 mai 2005 à 14:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
... et il y en a bien 664579... et ils sont tous stockés en mémoire...
Mon challenge : TROUVER ENCORE PLUS RAPIDE !
Bonne chance à tous...
Amicalement,
Us.
wonesek
Messages postés115Date d'inscriptionsamedi 2 février 2002StatutMembreDernière intervention13 mai 2006 29 avril 2003 à 16:38
Voila un petit challenge:
codé un programme qui trouve tous les nombre premier entre 0 et 10 000 000 le plus rapidement possible.
indice: il y en a 664 579
mon programme le fait en 3 minutes 50 secondes sur un 1.2 Ghz
bonne chance
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 19 mars 2003 à 16:28
khaleid, c une cata ton truc...
non seulement ça me met en rogne car tu utilise pas la fonction Mod
et en plus tu utilises le And, ce que 6Po décrit comme "pas bon", et c'est vrai il a pas tord!
ps : hé, 6Po, si t'en connais d'autres des bidouilles, je prends :)
trouvaille du moment : do until...loop plus rapide que for...next
khaleid
Messages postés39Date d'inscriptionmercredi 4 juillet 2001StatutMembreDernière intervention 8 avril 20141 15 déc. 2002 à 14:48
C'est quoi cet engouement pour les nombres premiers ??
@+, VIC
cs_6Po
Messages postés105Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention22 janvier 2009 10 déc. 2002 à 17:48
Vbsupernul
vivi c'est un RamDrive du serveur. Ca tourne a 1Ghz ca la rame du serveur fait du 1ghz :p
J'utilise ce pour le batch abominable :) Du style qui n'a pas payé sa facture de téléphone ce mois ci :p
Pour proger:
IF ... and ... en VB c'est connu que c'est pas bon.
fo préféré un
IF .... THEN
IF .... THEN
END IF
END IF
en plus en VB 0 faux et tout le reste vrai :p donc quand tu va faire un test fo pas oublie de faire l'inverse... ca VB le fais tres bien mais ca prends tjs un peu de temps :p
C'est pour ca que j'opte tjs pour le byte mais je voulais pas mettre un byte dans le source ci, sinon j'aurais eu plein de poste :p
Ricpperso
=====
ROLF :))) Alors pkoi tu les lis encore ?
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 10 déc. 2002 à 16:55
Bouh t'aime pas mon And en VB ? bouhouhou... :(
plus sérieusement, je n'ai jamais entendu dire que les opérations booléenne sont fastidieuse (en terme vitesse), surtout quand on compile son code vb en natif. c'est une fonction gravé en hard dans les cpu depuis le 4004 risc...
Et vi, la différence entre un Dim i et un Dim i as long, c'est 3,7 ms pour trouver que 2147483647 est premier. Le seul moyen de dé partager la plétore de sources "nb premier" sur vbfrance, c'est bien la rapidité du code, alors toi aussi, enc... les drosophiles :)
PS : 6Po, pour un chrono plus préçis que la milliseconde, va donc voir la catégorie "optimisation".
mon 700MHz mets 1.460521 ms exactement (priorité process : real time) pour trouver que 2^31 - 1 est premier. Qui dit mieux? ah, pas tous en même temps svp ;)
Ricpperso
Messages postés236Date d'inscriptionjeudi 24 janvier 2002StatutMembreDernière intervention26 octobre 2004 10 déc. 2002 à 16:11
Ya ques des sources sur les nombres premier ici :p:p:p. Bravo a tous les trois
Vbsupernul
Messages postés287Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention18 janvier 2004 10 déc. 2002 à 16:10
?????
un disk qui tourne en Ghz?????
Ca me laisse perplex :D
cs_6Po
Messages postés105Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention22 janvier 2009 10 déc. 2002 à 15:25
Pour tout le monde....
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
cs_6Po
Messages postés105Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention22 janvier 2009 10 déc. 2002 à 15:25
Pour tout le monde....
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
cs_6Po
Messages postés105Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention22 janvier 2009 10 déc. 2002 à 15:24
Pour tout le monde....
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 10 déc. 2002 à 14:42
Yo aKh, ça va ;)
juste trois bricoles dans l'exemple du commentaire ci-dessus :
if n 1 or n 0 : remplace par if n > -3 and n < 3 (ainsi les négatifs passent aussi)
ajoute : if n mod 2 = 0 then exit function '(on sort si c'est pair)
for i 2 to .... > for i 3 to int(sqr(n)+1) step 2 '(pour sauter les nombres pair)
ainsi ça va 2 fois plus vite :) (quoique, trouver que 2147483647 est pair ne dure que 3,2ms avec l'algo aKh, optimisé on obtient 1,6ms, c'est un peu de l'enc... de drosophiles)
et on peut diviser les nombres négatifs. en plus, faire n n * -1 pour inverser le signe, c'est plus evident (et économe) de faire n abs(n) .
Pitié les gars, taper "Premier" dans la case "chercher" de vbfrance, y'a deja 20 sources là-dessus...
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 10 déc. 2002 à 14:20
En effet c'est bcp plus simple mais ça doit être plus court :
Private Function isPremier(ByVal n As Long) As Boolean
Dim i as Long
If n 1 or n 0 Then Exit Function
'LA BOUCLE DE TESTS
For i = 2 To int(Sqr(n))+1
If n Mod i = 0 Then Exit Function
Next i
isPremier = True
End Function
Enfin tout ça pour te demander pk avoir écrit plein de code autour ... comme
'SI UN POYO MET UN NOMBRE NEGATIF
If n < 0 Then n = n * -1
Au fait ... un boolean non initializé en vb prendra tj la valeur par défault False ... c'est bon à savoir non (Un integer ou Numérique prendra 0 et un String sera Empty) ?
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 10 déc. 2002 à 14:14
4 mai 2005 à 14:25
Battu à plate couture !! avec mon pentium II 450 mhz, en 10 secondes !
Mon algo est déposé à : http://www.vbfrance.com/codes/PI-X-__NOMBRE_DE_NOMBRES_PREMIERS_-ALGO_RAPIDE-/31126.aspx
... et il y en a bien 664579... et ils sont tous stockés en mémoire...
Mon challenge : TROUVER ENCORE PLUS RAPIDE !
Bonne chance à tous...
Amicalement,
Us.
29 avril 2003 à 16:38
codé un programme qui trouve tous les nombre premier entre 0 et 10 000 000 le plus rapidement possible.
indice: il y en a 664 579
mon programme le fait en 3 minutes 50 secondes sur un 1.2 Ghz
bonne chance
19 mars 2003 à 16:28
non seulement ça me met en rogne car tu utilise pas la fonction Mod
et en plus tu utilises le And, ce que 6Po décrit comme "pas bon", et c'est vrai il a pas tord!
ps : hé, 6Po, si t'en connais d'autres des bidouilles, je prends :)
trouvaille du moment : do until...loop plus rapide que for...next
15 déc. 2002 à 14:48
http://forum.vbfrance.com/article.aspx?Val=5164
sur le sujet !
11 déc. 2002 à 13:51
10 déc. 2002 à 18:33
est un nombre premier... Mais avec VB On peut toujours s'accrocher aux branches pour le trouver !!
C'est quoi cet engouement pour les nombres premiers ??
@+, VIC
10 déc. 2002 à 17:48
vivi c'est un RamDrive du serveur. Ca tourne a 1Ghz ca la rame du serveur fait du 1ghz :p
J'utilise ce pour le batch abominable :) Du style qui n'a pas payé sa facture de téléphone ce mois ci :p
Pour proger:
IF ... and ... en VB c'est connu que c'est pas bon.
fo préféré un
IF .... THEN
IF .... THEN
END IF
END IF
en plus en VB 0 faux et tout le reste vrai :p donc quand tu va faire un test fo pas oublie de faire l'inverse... ca VB le fais tres bien mais ca prends tjs un peu de temps :p
C'est pour ca que j'opte tjs pour le byte mais je voulais pas mettre un byte dans le source ci, sinon j'aurais eu plein de poste :p
Ricpperso
=====
ROLF :))) Alors pkoi tu les lis encore ?
10 déc. 2002 à 16:55
plus sérieusement, je n'ai jamais entendu dire que les opérations booléenne sont fastidieuse (en terme vitesse), surtout quand on compile son code vb en natif. c'est une fonction gravé en hard dans les cpu depuis le 4004 risc...
Et vi, la différence entre un Dim i et un Dim i as long, c'est 3,7 ms pour trouver que 2147483647 est premier. Le seul moyen de dé partager la plétore de sources "nb premier" sur vbfrance, c'est bien la rapidité du code, alors toi aussi, enc... les drosophiles :)
PS : 6Po, pour un chrono plus préçis que la milliseconde, va donc voir la catégorie "optimisation".
mon 700MHz mets 1.460521 ms exactement (priorité process : real time) pour trouver que 2^31 - 1 est premier. Qui dit mieux? ah, pas tous en même temps svp ;)
10 déc. 2002 à 16:11
10 déc. 2002 à 16:10
un disk qui tourne en Ghz?????
Ca me laisse perplex :D
10 déc. 2002 à 15:25
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
10 déc. 2002 à 15:25
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
10 déc. 2002 à 15:24
Je crée pas cette source dans un but tech mais seulement pour eviter que tous les jours un mec nous postes ca sources isPremier avec 50 linges de code. Je sais qu'il y en a deja plein mais ceux que j'ai vu me font peur et je pense au mec qui comprend rien.
Pour Proger :
=======
LOL le and en VB :p arff ! Sorry....
2e chose le INT --> c'est en 16 bit en VB or les OS sont en 32 Bit le LONG et en 32 BIT le CPU calcul plus vite dans son propre nb de BIT.
Assembleur oblige.
Désolé pour ceux qui aurait Windope Serveur 64 Bits :p
pour l'optimisation n=1 ou n=0
Comme j'ai dit j'ai fait ca en 2min pour répondre a un autre qui avait posté une source avec des test en STING pour savoir si son nombre etait a virgule ou pas...
donc j'ai pas regarde dans les details
1.6 ms ? ummm ... je sais pas moi j'ai un disque de 1Ghz en RAM pure :p (Virutal disque) je suis sur le serveur :p
donc ca tourne a 0 aussi bien une que l'autre
Pour aKh :p
======
Le +1 sert a rien ca va encore faire gagné au moins 0.01 ms a Proger :p
Le true et le false ca me vient du C. et moi faire un exit function sans fait isPremier = false c'est pas bon, c'est pas tres propre
Quand au string a EMPTY et le numerique a 0 je trouve ca idiot et j'ai pas testé
mais je crois qu'en .Net c'est plus comme ca...
Bhen immagine tu crée un tableau de 500 elements
en VB.net
DIM tab[500] as integer //en plus en VB.nET c'est de 0 à 499 et non de 0à500 :p
DIM i
pour faire juste dessous
for i = 0 to 499
tab[i] = i
next i
vb6 va te faire un
DIM tab[500] as integer //0 à 500
-- VB
i = 0
for i = 0 to 500
tab(i) = 0
next i
toi tu crées ton i
dim i
-- vb
i = 0
for i = 0 to 500
tab(i) = i
next i
Tu vois une optimisation TOI ?
Ha moi pas....
Voila sinon je vous conseil d'aller joue à Pacman ou a prophecy engine :p
ici ---> www.dreamersteam.org
10 déc. 2002 à 14:42
juste trois bricoles dans l'exemple du commentaire ci-dessus :
if n 1 or n 0 : remplace par if n > -3 and n < 3 (ainsi les négatifs passent aussi)
ajoute : if n mod 2 = 0 then exit function '(on sort si c'est pair)
for i 2 to .... > for i 3 to int(sqr(n)+1) step 2 '(pour sauter les nombres pair)
ainsi ça va 2 fois plus vite :) (quoique, trouver que 2147483647 est pair ne dure que 3,2ms avec l'algo aKh, optimisé on obtient 1,6ms, c'est un peu de l'enc... de drosophiles)
et on peut diviser les nombres négatifs. en plus, faire n n * -1 pour inverser le signe, c'est plus evident (et économe) de faire n abs(n) .
Pitié les gars, taper "Premier" dans la case "chercher" de vbfrance, y'a deja 20 sources là-dessus...
10 déc. 2002 à 14:20
Private Function isPremier(ByVal n As Long) As Boolean
Dim i as Long
If n 1 or n 0 Then Exit Function
'LA BOUCLE DE TESTS
For i = 2 To int(Sqr(n))+1
If n Mod i = 0 Then Exit Function
Next i
isPremier = True
End Function
Enfin tout ça pour te demander pk avoir écrit plein de code autour ... comme
'SI UN POYO MET UN NOMBRE NEGATIF
If n < 0 Then n = n * -1
Au fait ... un boolean non initializé en vb prendra tj la valeur par défault False ... c'est bon à savoir non (Un integer ou Numérique prendra 0 et un String sera Empty) ?
10 déc. 2002 à 14:14