Из Википедия:
Сложность алгоритма
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)
. Согласны ли вы?