Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Решето Аткина23 января 2011Оглавление: 1. Решето Аткина 2. Объяснение 3. Оценка сложности В математике быстрый современный алгоритм нахождения всех простых чисел до заданного целого числа N. Основная идея алгоритма состоит в использовании неприводимых квадратичных форм. Предыдущие алгоритмы в основном представляли собой различные модификации решета Эратосфена, где использовалось представление чисел в виде редуцированных форм. Отдельный этап алгоритма вычеркивает числа, кратные квадратам простых чисел. Алгоритм был создан А. О. Л. Аткиным русск. и Дэниел Ю. Бернштайном русск. . Упрощённая версия алгоритмаНиже представлена упрощённая версия кода на языке программирования Си, иллюстрирующая основную идею алгоритма использование квадратичных форм. int limit = 1000; int sqr_lim; bool is_prime; int x2, y2; int i, j; int n; // Инициализация решета sqr_lim = sqrtlimit); for is_prime = false; is_prime = true; is_prime = true; // Предположительно простые - это целые с нечетным числом // представлений в данных квадратных формах. // x2 и y2 - это квадраты i и j. x2 = 0; for { x2 += 2 * i - 1; y2 = 0; for { y2 += 2 * j - 1; n = 4 * x2 + y2; if && ) is_prime = !is_prime; // n = 3 * x2 + y2; n -= x2; // Оптимизация if && ) is_prime = !is_prime; // n = 3 * x2 - y2; n -= 2 * y2; // Оптимизация if && && ) is_prime = !is_prime; } } // Отсеиваем кратные квадратам простых чисел в интервале. // for { if { n = i * i; for { is_prime = false; } } } // Вывод списка простых чисел в консоль. printf; for { // добавлена проверка делимости на 3 и 5. В оригинальной версии алгоритма потребности в ней нет. if && && ){ printf; } } Просмотров: 5418
|