@Мэтт: журналу(log(10000)) - это ~2
Из статьи в Википедии (которую вы цитировали) решето Аткина:
Это сито вычисляет простые числа до n
используя операции
O(N/log log N)
с
только Н1/2 О(1) бит памяти. Это
немного лучше, чем решето
Эратосфен, который использует
O(N)
операций и o(Н1/2(журнала журнала N)/журнал
Н) биты памяти (А. О. Л. Аткин, Д. Я. Берштейн, 2004). Эти асимптотические
вычислительная сложность включают
простые методы оптимизации, такие как колеса
факторизации и расщепления
расчет на более мелкие блоки.
С учетом асимптотической вычислительной сложности по
O(N)
(по Эратосфену) и
O(N/log(log(N)))
(для Эткина) мы не можем сказать (для малых
N=10_000
), какой алгоритм если реализовано будет быстрее.
Flammenkamp Ахим писал в "решето Эратосфена":
цитируется по:
@num1 как
Для интервалов больше, около 10^9,
конечно, для тех, > 10^10, решето
Эратосфен превысил
Сито Аткинса и Бернстайна, которые
использует неприводимых двоичных квадратичных
форм. Увидеть их бумага для фона
информации, а также пункта 5
Кандидатская диссертация В. Д. Голуэя.
Поэтому для
10_000
решето Эратосфена может быть тогда быстрее решета Аткина.
Чтобы ответить на ОП код prime_sieve.с (цитируется по
num1
)