[править | править код]
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 марта 2020; проверки
требуют 5 правок.
Содержание
1История
2Алгоритм
3Пример для n = 30
4Псевдокод
5Сложность алгоритма
o 5.1Доказательство сложности
6Модификации метода
o 6.1Неограниченный, постепенный вариант
o 6.2Перебор делителей
o 6.3Сегментированное решето
o 6.4Решето Эйлера
o 6.5Решето только по нечётным числам
o 6.6Уменьшение объёма потребляемой памяти
o 6.7Решето Эратосфена с линейным временем работы
6.7.1Псевдокод
7Сложность алгоритма на практике
8См. также
9Примечания
10Литература
11Ссылки
История[править | править код]
Название «решето» метод получил потому, что во времена Эратосфена писали
числа на дощечке, покрытой воском, и прокалывали дырочки в тех местах, где
были написаны составные числа. Поэтому дощечка являлась неким подобием
решета, через которое «просеивались» все составные числа, а оставались только
числа простые . Эратосфен дал таблицу простых чисел до 1000.
[2]
Алгоритм[править | править код]
Для нахождения всех простых чисел не больше заданного числа n, следуя методу
Эратосфена, нужно выполнить следующие шаги:
простые числа (кроме 2) — нечётные числа, и поэтому для них можно считать
шагами по 2p, начиная с p . 2
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30
2 3 5 7 11 13 17 19 23
29
Псевдокод[править | править код]
Оптимизированная реализация (начинающаяся с квадратов) на псевдокоде : [4][5]
A[j] := false
Здесь из суммы выделено слагаемое для первого простого числа, чтобы избежать
деления на нуль. Данную сумму можно оценить интегралом
Здесь показан пример начиная с нечетных чисел, после первого этапа алгоритма.
Таким образом, после k-го этапа рабочий список содержит только числа взаимно
простые с первыми k простыми числами (то есть числа не кратные ни одному из
первых k простых чисел), и начинается с (k+1)-го простого числа. Все числа в
списке, меньшие квадрата его первого числа, являются простыми.
В псевдокоде,
Псевдокод[править | править код]
Вход: натуральное число n
На практике оказывается, что оценка ln ln n не очень точна даже для максимальных
практических диапазонов таких как 10 . Ознакомившись с
16 [18]
Следует также отметить, что решето Эратосфена работает быстрее, чем часто
сравниваемое с ним решето Аткина только для значений n меньших 10 . 10
5000
0.00473
0.00305
0.00254
0.00293
0.00551
0.03207
50000
0.05156
0.03281
0.02617
0.02578
0.03164
0.10663
500000
0.55817
0.35037
0.28240
0.28358
0.28397
0.47028
5000000
6.06719
3.82905
3.20722
3.25214
3.28104
3.38455
500
0.00147
0.00074
0.00050
0.00051
0.00095
0.00649
5000
0.01519
0.00777
0.00527
0.00453
0.00430
0.00973
50000
0.15507
0.08203
0.05664
0.04843
0.04180
0.04413
500000
1.60732
0.86254
0.61597
0.53825
0.47146
0.43787
5000000
16.47706
9.00177
6.57146
5.83518
5.27427
4.88251