Решето Эратосфена и поиск простых чисел

Как найти все простые числа сразу — и сколько это стоит. 11 класс, углублённый уровень — пара пятнадцатая.

Уроки 29–30 поурочного плана: «Поиск простых чисел в заданном диапазоне с помощью алгоритма „решето Эратосфена“» и практическая работа «Поиск простых чисел в заданном диапазоне». На прошлой паре мы оценивали сложность алгоритмов. Сегодня — алгоритм, которому больше двух тысяч лет, и он до сих пор один из самых быстрых.

Простые числа

Простое число — натуральное число больше 1, у которого ровно два делителя: 1 и само число. Остальные числа больше 1 — составные.

Проверка делителями до √n

Чтобы узнать, простое ли n, не нужно делить на все числа до n − 1.

Решето Эратосфена

  1. Выписываем числа от 2 до N.
  2. Первое невычеркнутое число p — простое.
  3. Вычёркиваем его кратные, начиная с p·p.
  4. Берём следующее невычеркнутое и повторяем, пока p·p ≤ N.
  5. Невычеркнутые — ровно простые.

Эратосфен Киренский, III век до н. э.: числа будто просеивают — составные «проваливаются».

Почему с p·p и до √N

Начало — p·p

Кратные p меньше p·p — это p·k при k < p. У k есть простой делитель меньше p, и это число уже вычеркнуто. Для 7: 14, 21, 28, 35, 42 вычеркнули 2, 3 и 5, первое новое — 49.

Конец — p·p > N

Если p·p > N, у шага p нечего вычеркнуть: всё, что меньше p·p, уже вычеркнуто. Для N = 100 хватает 2, 3, 5, 7, ведь 11·11 = 121 > 100.

Решето в программе

фрагмент программы — набери его сам

код — список из N + 1 значений True: s[n] значит «n ещё не вычеркнуто». код — от p·p до N с шагом p.

Сколько стоит решето

Время

Шаг p вычёркивает около N/p чисел. Всего N/2 + N/3 + N/5 + N/7 + … — порядка N·log log N: чуть больше N.

Память

По отметке на каждое число — порядка N. Это плата за скорость.

Простые на отрезке — вручную

Нужны простые числа от 120 до 150. Решето от 2 не нужно: вычёркиваем числа отрезка, кратные простым до √150 ≈ 12,2 — это 2, 3, 5, 7, 11.

Пишем отрезок по десяткам: кратные 2 и 5 — сразу целые столбцы, кратные 3 — по сумме цифр.

Решето на отрезке [A; B]

Когда отрезок далеко — например, от 1 000 000 до 1 000 100, — выписывать числа от 2 незачем.

Практическая работа: простые от A до B

фрагмент программы — набери его сам

Что верно, а что нет

Верно

  • У составного n есть делитель не больше √n.
  • Вычёркивать кратные p можно с p·p.
  • Хватает простых p, у которых p·p ≤ N.
  • Решету нужна память порядка N.

Неверно

  • «1 — простое». Делитель у него один.
  • «Не делится на 2, 3, 5 — значит простое». 49 = 7·7.
  • «Каждое число вычёркивается один раз». 12 — дважды.
  • «Простые с ростом чисел встречаются чаще». Реже.

Что делаем дальше

  1. Обзорный практикум — шесть задач, все сразу на странице, в любом порядке: понятия, решето вручную, сколько вычёркиваний сделает программа, решето на отрезке, простые на отрезке вручную и программой.
  2. Отрезки — на черновике по десяткам, как на слайдах. Код в задачах — картинкой, его читают.
  3. Шестой вопрос — практическая работа: свою программу пишем в IDLE.
  4. Ответ везде — целое число.

Отметка: закрыто 6 из 6 — «5», 5 — «4», 3 или 4 — «3». Исправленная задача не засчитывается — за ошибку приходит новая, добирать можно до пятёрки.

За работу

Практикум «Решето Эратосфена и поиск простых чисел» — в общей папке и на сайте. Не успел на уроке — пройди дома: вариант будет другой, сдаётся тем же кодом.

Карточку в тетрадь можно взять с собой: на ней решето, правило «с p·p и пока p·p ≤ N», решето на отрезке и образец программы.

Материалы подготовлены с использованием технологий искусственного интеллекта. Пробел раскрыть и дальше · ← → слайды