Складність алгоритму -
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). Ви згодні?