Hallo liebe Community,
Ich habe mich ein bisschen durch http://rosettacode.org gewühlt und bin auf das Sieb des Eratosthenes gestoßen.
Ich habe mir meine Gedanken dazu gemacht und den folgenden Code auch schon eingefügt:
Spoiler anzeigen
#include <Array.au3>
$Input = InputBox("Integer", "Enter biggest Integer")
$timer = TimerInit()
Global $array[$Input][2], $retarray[1], $counter = 0, $txt = ""
For $i = 2 To UBound($array)
$array[$i - 1][0] = $i
$array[$i - 1][1] = -1
Next
For $i = 1 To UBound($array) - 1
If $array[$i][1] = -1 Then
$array[$i][1] = 1
_ArrayAdd($retarray, $array[$i][0])
$counter += 1
For $k = $i To UBound($array) - 1 Step $array[$i][0]
$array[$k][1] = 0
Next
EndIf
Next
$retarray[0] = $counter
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : TimerDiff($Timer) = ' & TimerDiff($Timer) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
_ArrayDisplay($retarray)
Ich würde jetzt gerne von euch wissen, ob man das noch irgendwie schneller machen könnte.
Ich würde gerne das Ausgabeformat (Array mit den Primzahlen und Anzahl der Primzahlen in $array[0]) beibehalten, ich weiß das es mit einem String schneller gehen würde (ohne das _ArrayAdd). Ich komme jetzt bei Input = 1000 auf ~ 25ms, würde aber gerne wissen, ob es noch schneller geht