Я реализую достаточно быстрый генератор простых чисел, и я получил неплохие результаты с несколькими оптимизациями на сите эратосфенов. В частности, в ходе предварительной части алгоритма, я пропустить все кратные 2 и 3 таким образом:Сито эратосфенов с фазообразованием колес
template<class Sieve, class SizeT>
void PrimeGenerator<Sieve, SizeT>::factorize()
{
SizeT c = 2;
m_sieve[2] = 1;
m_sieve[3] = 1;
for (SizeT i=5; i<m_size; i += c, c = 6 - c)
m_sieve[i] = 1;
}
Здесь m_sieve является булевым массивом в соответствии с решетом Эратосфена. Я думаю, что это своего рода факторизация колес только с учетом простых чисел 2 и 3, увеличивающихся по образцу 2, 4, 2, 4, .. Что бы я хотел сделать, так это реализовать большее колесо, возможно, с учетом чисел 2,3 и 5. Я уже прочитал много документации об этом, но я не видел никакой реализации с ситом eratosthenes ... пример кода мог бы помочь много, но и некоторые подсказки были бы приятными :) Спасибо.
Что вы хотите сказать? Вы ищете сито эрафосфенового кода? –
http://stackoverflow.com/questions/8341295/2-3-5-7-wheel-factorization-seems-to-skip-prime-number-331 имеет реализацию Haskell в ответах. –
Прошу прощения, если я не был ясен: я бы хотел пропустить все кратные 2,3 и 5, как я уже делаю для кратных 2 и 3. И нет, мне не нужно сито из эратосфена код – Crybot