Da Wikipedia:
A complexidade do algoritmo é a
O(n(logn)(loglogn))
operação de bits.
Como você chegou a isso?
O fato de a complexidade incluir o loglogn
termo me diz que existe um sqrt(n)
lugar.
Suponha que eu esteja executando a peneira nos primeiros 100 números ( n = 100
), supondo que marcar os números como compostos leva um tempo constante (implementação de matriz), o número de vezes que usamos mark_composite()
seria algo como
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
E para encontrar o próximo número primo (por exemplo, para saltar 7
depois de riscar todos os números que são múltiplos de 5
), o número de operações seria O(n)
.
Então, a complexidade seria O(n^3)
. Você concorda?