
PrimNum ist ein kleines Programm das Primzahlen zwischen 1 - 1'000'000'000 mit einem sehr schnellen Algorithmus berechnet.
Je nach Prozessor können die bis zu Primzahl 1'000'000'007, 50'847'536 Zahlen in zwischen 20 - 60 Sekunden berechnet werden. Dabei ist die Zeitkomplexität fast linear. Es ist komplett in Visual-Basic geschrieben, würde man die Kern-Routinen in ASM programmieren, könnte man die Geschwindigkeit noch weiter steigern. Werden die Zahlen gleichzeitig gespeichert dauert die Berechnung um einiges länger. Aber Vorsicht, die Datei kann dabei 527MB groß werden.
Der Algorithmus basiert auf dem Sieb-des-Eratosthenes, statt bei jeder Zahl alle ungeraden Zahlen bis zu Sqr(P) zu prüfen kann ein ganzes Segment an Zahlen bearbeitet werden und das hauptsächlich nur mit Additions-Operationen.
Das Programm kann sozusagen als platzsparenden Listengenerator benutzt werden für diejenigen die eine solche zum testen brauchen, können sie die in beliebiger Länge generieren ohne die Liste selbst aufbewahren zu müssen.
Die Zeitmessungen wurden mit einem 933MHz CPU und einer langsamen Harddisk gemessen. Nicht alle Prozessoren bearbeiten gleiche Operationen auch gleich schnell, so kann es sein das auch ein schnellerer Prozessor langsamer ist weil ein anderer bestimmte Funktionen effizienter durchführt, zB. Byte Long oder Array Operationen.
(Hinweis: Per Definition ist 1 aus mathematischen Gründen keine Primzahl, dennoch ist 1 unteilbar und steht deshalb auf der Liste.)
Das Programm ist Freeware und liegt im Download.
| Letzte Primzahl | Anzahl Primzahl | Zeit -Speichern | Zeit +Speichern | Dateigröße |
|---|
| 1'000'003 | 78'500 | 00:00 02 | 00:00 15 | 616'978 Bytes |
| 10'000'019 | 664'581 | 00:00 21 | 00:01 51 | 5'891'708 Bytes |
| 100'000'007 | 5'761'457 | 00:02 40 | 00:15 63 | 56'860'469 Bytes |
| 1'000'000'007 | 50'847'536 | 00:22 89 | 02:29 70 | 552'807'339 Bytes |