Aus Wikipedia:
Die Komplexität des Algorithmus sind
O(n(logn)(loglogn))
Bitoperationen.
Wie kommst du dazu?
Dass die Komplexität den loglogn
Begriff enthält, sagt mir, dass es sqrt(n)
irgendwo einen gibt.
Angenommen, ich lasse das Sieb auf den ersten 100 Zahlen ( n = 100
) laufen , vorausgesetzt, dass das Markieren der Zahlen als zusammengesetzt eine konstante Zeit mark_composite()
in Anspruch nimmt (Array-Implementierung). Die Häufigkeit, mit der wir sie verwenden, wäre ungefähr so
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Und um die nächste Primzahl zu finden (zum Beispiel, um zu springen, 7
nachdem alle Zahlen, die Vielfache von sind 5
, durchgestrichen sind ), wäre die Anzahl der Operationen O(n)
.
Die Komplexität wäre also O(n^3)
. Sind Sie einverstanden?