@closure
Danke für den Tipp. Mit einem BitSet geht der Zahlenbereich bis ca 500'000'000 bevor mit der Speicher um die Ohren fliegt. Auch ist er wesentlich schneller bei grösseren Zahlen, als meine Arraymethode. Bis 500'000 hat die Arraymethode die Nase vorn, danach liegt der Vorteil klar beim BitSet.
Also bis 500'000'000 dauert mein Code nun etwa 12 Sekunden bis alle Primen gefunden sind (getestet auf meinem 2.8 Pentium 4 mit 1024 Mb Ram). Der Vorteil an BitSet ist, neben dem dass es weniger Speicher zu beanspruchen scheint, dass es Fkt wie nextSetBit() cardinality() gibt, welche das Finden der nächsten zu testenden Zahl und aller Werte auf true erheblich beschleunigt.
Gruss
tobi
Danke für den Tipp. Mit einem BitSet geht der Zahlenbereich bis ca 500'000'000 bevor mit der Speicher um die Ohren fliegt. Auch ist er wesentlich schneller bei grösseren Zahlen, als meine Arraymethode. Bis 500'000 hat die Arraymethode die Nase vorn, danach liegt der Vorteil klar beim BitSet.
Also bis 500'000'000 dauert mein Code nun etwa 12 Sekunden bis alle Primen gefunden sind (getestet auf meinem 2.8 Pentium 4 mit 1024 Mb Ram). Der Vorteil an BitSet ist, neben dem dass es weniger Speicher zu beanspruchen scheint, dass es Fkt wie nextSetBit() cardinality() gibt, welche das Finden der nächsten zu testenden Zahl und aller Werte auf true erheblich beschleunigt.
Gruss
tobi
Kommentar