Nombres premiers
Publié : jeu. 23/juin/2011 14:16
Trouver les nombres premiers tres rapidement (il n'y a pas plus rapide) :
Code : Tout sélectionner
cmb=10000 ; combien de nombre premier on souhaite
Dim np(cmb); banque a nombre premier
nb.q=3 ; nb=3. c'est obligatoire.
np(1)=3; obligatoire aussi
temps=GetTickCount_() ; chronometre a zero
Repeat
i=1
racine=Sqr(nb)
;;;;;
While np(i)<=racine ; tant qu'on a pas testé jusqu'a la racine carré de NB
If nb%np(i)=0 ; on teste la division par les nombres premiers deja trouvé et mis en banque
Goto NP_suite ; on a trouvé un nombre non premier alors on va a la suite
EndIf
i+1
Wend
;;;;;
np(0)+1 ; on a trouvé un nombre premier alors on augmente np(0)
np(np(0))=nb ; et on ecris ce nombre premier en banque
;Debug nb
;;;;;
NP_suite:
nb+2 ; comme on ne teste que les nombres impairs, on saute de 2
Until np(0)=cmb ; on s'arretera quand on aura le compte de nombres premiers
np(0)=2 ; on ecris au debut de la banque le seul nombre premier pair
temps=GetTickCount_()-temps ; on stoppe le chronometre
MessageRequester("Erreur", Str(temps)+" ms")
For i=0 To cmb
Debug np(i) ; on liste nos nombres premiers
Next