Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Решето Аткина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;
}
}
Просмотров: 5803
|