Bevor ich es vergesse, hier mal eine andere Version des Algo in Beitrag #18.
Könnt ihr mal eure Ergebnisse posten? Bei mir braucht das mit den String Funktionen etwas unter einer Sekunde. ![]()
Spoiler anzeigen
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global Const $hTime = TimerInit()
Global Const $aPrimes = SieveOfEratosthenes(1000000)
ConsoleWrite(Round(TimerDiff($hTime) / 1000, 3) & ' Sekunden' & @CRLF)
_ArrayDisplay($aPrimes)
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]Func SieveOfEratosthenes($limit)
Local $sievebound = ($limit -1) / 2
Local $sieve[$sievebound +1]
Local $crosslimit = (Sqrt($limit) -1) / 2
Local $primes = '2|'
Local $i, $j
For $i = 1 To $crosslimit
If Not $sieve[$i] Then
For $j = 2 * $i * ($i +1) To $sievebound Step 2 * $i +1
$sieve[$j] = True
Next
EndIf
Next
For $i = 1 To $sievebound
If Not $sieve[$i] Then $primes &= 2 * $i +1 & '|'
Next
Return StringSplit(StringTrimRight($primes, 1), '|', 2)
EndFunc
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit]