Из Википедии:
Сложность алгоритма -
O(n(logn)(loglogn))битовые операции.
Как вы к этому пришли?
То, что loglognтермин включает сложность, говорит мне, что sqrt(n)где-то есть.
Предположим, я использую решето для первых 100 чисел ( n = 100), предполагая, что маркировка чисел как составных занимает постоянное время (реализация массива), количество использованных нами раз mark_composite()будет примерно таким, как
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
А чтобы найти следующее простое число (например, чтобы перейти к нему 7после вычеркивания всех чисел, кратных ему 5), количество операций будет O(n).
Итак, сложность была бы O(n^3). Вы согласны?