Кому-нибудь удалось реализовать решето Аткина, чтобы работало быстрее решета Эратосфена?
Теоретически Аткин быстрее
vs
у Эратосфена. Но на практике приходится использовать блочный вариант в обоих случаях, чтобы блок влезал в кеш, иначе сразу медленнее на порядок. Так вот блочные варианты обоих методов имеют оверхед, причём у решета Аткина он растёт заметно быстрее.
К примеру, мне удалось сделать решето Эратосфена по модулю 30 (в одном байте), и решето Аткина по модулю 24 (на байт), т.к. в нём используется модуль 12.
В результате решето Аткина у меня работает где-то на 25% медленнее до
, и при дальнейшем росте чисел начинает быстро отставать, например до
- уже медленнее в 2 раза.
Сначала я решил, что не заметил какой-то оптимизации в решете Аткина, и скачал
primegen-0.97, программу, которую на нескольких сайтах назвали самой быстрой программой поиска простых чисел, использующую как раз решето Аткина. Оказалось, что их реализация даже медленнее чем моя, и замедляется с ростом
ещё быстрее.
И вот я в непонятках, есть ли возможность сделать решето Аткина быстрее решета Эратосфена?