From Wikipedia:
The complexity of the algorithm is
O(n(logn)(loglogn))
bit operations.
How do you arrive at that?
That the complexity includes the loglogn
term tells me that there is a sqrt(n)
somewhere.
Suppose I am running the sieve on the first 100 numbers (n = 100
), assuming that marking the numbers as composite takes constant time (array implementation), the number of times we use mark_composite()
would be something like
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
And to find the next prime number (for example to jump to 7
after crossing out all the numbers that are multiples of 5
), the number of operations would be O(n)
.
So, the complexity would be O(n^3)
. Do you agree?