Salut ! Il y a du monde !
Envoyé par
pijaku
@Marc-L : Qu'est ce que tu appelles Modulo2 ?
En fait c'est juste le nom d'une procédure, une variante de la première …
Envoyé par
eriiic
A la racine carrée non ?
Envoyé par
joe.levrai
pour la racine carrée
Pour ne pas mettre l'étudiant sur la voie car non seulement il a un support de cours
mais aussi ce n'est pas compliqué d'effectuer une recherche sur le Net
donc j'en étais resté à la pure logique arithmétique niveau collège mais pour Patrick
je confirme le plus efficace est bien de se limiter à la racine carrée de n comme démontré par Erathostène …
Ceci dit, j'ai optimisé mes procédures, l'ancienne Modulo1 (au tiers de n) est devenue la Modulo2
et la nouvelle Modulo1 a été portée au niveau du crible et elle lui tient la dragée haute ! (en fait non, voir l'Edit en bas …)
Tests i5 2.5GHz, juste le temps de calculs sans tenir compte de l'affichage dans la feuille :
Pour 11 000 :
Modulo1 : 0,000s
Crible : 0,016s
Modulo2 : 0,063s
A noter à 10 000 le crible est à zéro sauf si je le teste en premier il décroche avant dans les 9 500+ …
Pour 21 500 :
Modulo1 : 0,000s
Crible : 0,016s
Modulo2 : 0,141s
Pour 22 000 :
Modulo1 : 0,016s
Crible : 0,031s
Modulo2 : 0,141s
Pour 50 000 :
Modulo1 : 0,031s
Crible : 0,063s
Modulo2 : 0,641s …
Edit : tout dépend où l'on décide d'arrêter le chronomètre …
Pour le crible après la dernière boucle je supprime les non premiers de la variable tableau via la fonction VBA Filter.
Les temps ci-dessus sont arrêtés juste après cette fonction.
Si par contre le temps est décompté avant cette fonction juste après la sortie de la boucle, le crible repasse devant Modulo1.
Et je n'utilise pas la fonction Filter pour le modulo …
Partager