Thread Primzahlen finden: wie würdet ihr es machen ? (16 answers)
Opened by Matze at 2006-05-15 14:13

lichtkind
 2006-05-16 13:41
#66113 #66113
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
mir ist noch eingefallen das in perl6 der ganze algoritmus sehr stark optimiert werden kann, nicht nur weil wir ja bloss bitarray brauchen, habe mal in früheren überlegungen gemerkt das wir ja zum speichern der primzahlen nur einne packed bit array brauchen der 5 byte je 100 zahlen abstellt. statt jetzt 200 oder 400 byte je 100 zahlen. das kommt daher das primzahlen ja (bis auf die erste dekade) nur auf 1,3,7,9 enden können wir also nur ein nibble brauchen um eventuelle primzahlen zu speichern. macht 5 byte je 100.

die andere sache bezog sich auf vermeidung das eine zahl sooft markiert wird wieviele teiler sie hat, aber ich bin mir noch nicht sicher ob das wirklich effektiv ist, da einfache iterierung sehr billig sind da man statt

>$sieb[$i*$_] = 1 for 2..int $max/$i;

auch schreiben kann:

>$sieb[$j] = 1 for (my $j=$i; $j <= int $max/$i; $j += $i);

in perl6 auch

> $sieb[$_] = 1 for $i*2..int $max/$i :by($i);

wobei für alle zahlen ausser 2 noch die leicht optimierte version

> $sieb[$_] = 1 for $i*$i..int $max/$i :by($i*2);

hilfreich sein kann.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.

View full thread Primzahlen finden: wie würdet ihr es machen ?