11 класс, углублённый уровень. Обзорный практикум к пятнадцатой паре: шесть задач — решето на бумаге и в программе, простые числа на отрезке вручную и своей программой.
25, а не 25 чисел.
На КЕГЭ ответ читает машина, и здесь так же.Простое число — натуральное число больше 1, у которого ровно два делителя: 1 и само число. Остальные числа больше 1 — составные. Число 1 ни простое, ни составное. 2 — единственное чётное простое. Простых чисел бесконечно много (Евклид), но с ростом чисел они встречаются всё реже. Близнецы — простые p и p + 2: 11 и 13, 17 и 19.
Если n = a·b и оба множителя больше √n, то a·b > n. Значит, у составного n есть делитель d, для которого 1 < d ≤ √n, и проверять делители дальше √n не нужно: у 97 хватит 2, 3, 5, 7 (11·11 = 121 > 97).
Выписываем числа от 2 до N. Берём первое невычеркнутое число p — оно простое — и вычёркиваем его кратные. Переходим к следующему невычеркнутому, и так далее. Невычеркнутые в конце — ровно простые.
Шаг p вычёркивает около N/p чисел: от p·p до N с шагом p — это ⌊(N − p·p)/p⌋ + 1 вычёркиваний. Всего N/2 + N/3 + N/5 + … — порядка N·log log N, чуть больше N. Память — порядка N: по отметке на каждое число. Проверка каждого числа делителями до √n — до N·√N действий: для N = 100 000 это 2,7 млн делений против 193 тыс. вычёркиваний решета. Решето быстрее во много раз, но платит памятью.
Нужны простые p до √B. Для каждого вычёркиваем числа отрезка, кратные p, начиная с большего из двух: p·p и первого кратного p, не меньшего A (это ⌈A/p⌉·p). Числа, не делящиеся на 2, 3 и 5, повторяются с периодом 30: в каждых 30 подряд их ровно 8.
Для отрезка до нескольких миллионов решето работает секунды. Можно и без списка: для каждого n отрезка проверить делители от 2 до √n — так дольше, но на сотне тысяч чисел тоже успевает.
Материалы подготовлены с использованием технологий искусственного интеллекта.