Da Wikipedia:
La complessità dell'algoritmo è costituita dalle
O(n(logn)(loglogn))operazioni sui bit.
Come ci si arriva?
Il fatto che la complessità includa il loglogntermine mi dice che c'è un sqrt(n)da qualche parte.
Supponiamo che io esegua il setaccio sui primi 100 numeri ( n = 100), assumendo che contrassegnare i numeri come composti richieda tempo costante (implementazione dell'array), il numero di volte che usiamo mark_composite()sarebbe qualcosa di simile
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
E per trovare il numero primo successivo (ad esempio a cui saltare 7dopo aver barrato tutti i numeri multipli di 5), il numero di operazioni sarebbe O(n).
Quindi, la complessità sarebbe O(n^3). Sei d'accordo?