Как проверить число на простоту: перебор и тест Ферма
Дано: число . Найти: простое оно или составное.
Метод состоит из двух частей: перебор делителей до по простым кандидатам из решета Эратосфена и контрольный тест Ферма по основанию 2. Ответ: 1729 составное, оно делится на 7, и перебор обрывается на четвёртой проверке. Тест Ферма при этом даёт остаток 1 и объявляет число вероятно простым, то есть ошибается. Калькулятор сверху проходит обе процедуры для любого числа до миллиарда.
Решение по шагам
Дано. . Найти: вердикт «простое или составное» с обоснованием.
Шаг 1. Считаем границу перебора. Простым называется натуральное число больше единицы, у которого ровно два делителя: единица и оно само. Значит, задача сводится к поиску хотя бы одного делителя в промежутке от 2 до , а искать его достаточно до корня:
Шаг 2. Готовим список кандидатов. Составные делители проверять незачем: если бы 1729 делилось на 9, оно делилось бы и на 3. Поэтому в кандидаты идут только простые числа до 41:
Их 13 против 40 чисел подряд от 2 до 41 и против 863 при наивном переборе до половины числа. Откуда берётся такой список, разобрано ниже в разделе про решето.
Шаг 3. Перебираем кандидатов по порядку.
- 1729 нечётное, значит на 2 не делится.
- Сумма цифр на 3 не делится, значит и само число не делится.
- Последняя цифра 9, признак делимости на 5 не выполнен.
- без остатка.
Шаг 4. Останавливаемся. Делитель найден на четвёртой проверке из тринадцати возможных. Продолжать перебор не нужно: одного нетривиального делителя достаточно, чтобы вердикт был вынесен. Полное разложение получается, если довести деление до конца, но это уже другая задача, она разобрана в разборе разложения числа на простые множители.
Шаг 5. Проверяем тестом Ферма. Считаем и получаем 1, то есть тест признаёт число вероятно простым. Это прямое противоречие с шагом 3, и разбирается оно в предпоследнем разделе: тест Ферма умеет уверенно доказывать только составность, а обратный вывод у него ненадёжен.
Ответ: число 1729 составное, его наименьший простой делитель равен 7; перебор выносит вердикт за 4 проверки делимости, а тест Ферма по основанию 2 на этом числе ошибается.
Формула: почему хватает делителей до корня
Пусть составное, то есть , где оба множителя больше единицы. Предположим, что оба они больше корня: и . Тогда
что противоречит равенству . Значит, хотя бы один множитель не превосходит , и именно его находит перебор.
Отсюда рабочее правило: перебор кандидатов идёт, пока выполняется . Такая запись удобнее сравнения с корнем, потому что не требует вычисления корня и работает без округлений. Граница включает сам корень: у полного квадрата единственный делитель до корня равен как раз 43, и если оборвать перебор на 42, число будет ошибочно объявлено простым.
Второй вывод из этого же рассуждения важнее первого. Если ни один кандидат до не подошёл, число простое, и это уже доказательство, а не догадка. Перебор до корня даёт строгий ответ в обе стороны, чем и отличается от вероятностных тестов.
Решето Эратосфена: откуда берётся список кандидатов
Кандидатов удобно получать не пробным делением каждого числа, а сразу списком. Решето Эратосфена работает так: выписываем числа от 2 до выбранной границы, берём первое невычеркнутое число, объявляем его простым и вычёркиваем все его кратные. Начинать вычёркивание можно с квадрата: меньшие кратные уже вычеркнуты предыдущими шагами.
| Шаг | Вычёркиваем кратные | Вычеркнуто чисел | Осталось кандидатов |
|---|---|---|---|
| 1 | 2, начиная с 4 | 49 | 50 |
| 2 | 3, начиная с 9 | 16 | 34 |
| 3 | 5, начиная с 25 | 6 | 28 |
| 4 | 7, начиная с 49 | 3 | 25 |
Решето до 100 останавливается после семёрки: следующее простое 11 дало бы первое вычёркивание с числа . Остаётся 25 простых чисел, и первые тринадцать из них как раз покрывают проверку числа 1729. Переключи график калькулятора на режим решета, чтобы увидеть, как быстро падает число кандидатов на первых шагах.
Решето выгодно, когда проверять надо не одно число, а много: список простых строится один раз и переиспользуется. Для чисел до миллиарда хватает решета до , в нём около 3400 простых, и такой массив спокойно помещается в память. Дальше решето перестаёт масштабироваться: для чисел из сотен цифр корень тоже астрономический, и перебор становится безнадёжным.
Тест Ферма и его псевдопростые
Малая теорема Ферма утверждает: если простое и не делится на , то
Тест использует обратное по контрапозиции: если для какого-то основания остаток отличается от единицы, число точно составное. Считать степень напрямую не нужно, работает быстрое возведение с последовательным возведением в квадрат, разобранное в задаче про степень по модулю. Показатель раскладывается по двоичной записи: .
| Степень | Остаток по модулю 1729 |
|---|---|
| 1290 | |
| 802 | |
| 256 | |
| 1563 |
Перемножаем нужные остатки: , затем и . Тест пройден, хотя число составное. Такие числа называют псевдопростыми по данному основанию, а 1729 хуже того: у него все 22 взаимно простых основания в диапазоне от 2 до 30 дают единицу. Числа с таким свойством называются числами Кармайкла, наименьшее из них 561, и увеличение числа проверяемых оснований против них не помогает.
Выдают такие числа только основания, имеющие с ними общий делитель: при остаток равен 742. Но подбор такого основания равносилен угадыванию делителя, поэтому на практике берут более сильный тест Миллера и Рабина. Он смотрит не только конечный остаток, но и промежуточные квадраты: для 1729 цепочка даёт , затем 1065, затем 1. Единица получена из 1065, а это нетривиальный квадратный корень из единицы, которого у простого модуля быть не может. Более того, наибольший общий делитель чисел 1064 и 1729 равен 133, то есть тест попутно выдаёт делитель. Существует и точный критерий простоты через факториал, теорема Вильсона, но считать дороже, чем перебирать делители, поэтому в расчётах его не применяют.
Простота числа - это ещё и условие разрешимости многих уравнений в целых числах: НОД взаимно простых чисел равен единице, поэтому диофантово уравнение с такими коэффициентами разрешимо всегда - разбор см. в задаче про уравнение в целых числах.
Частые ошибки
- Перебор делителей до или до . Для 1729 это 863 проверки вместо 13, а для чисел порядка миллиарда разница между и превращает секунды в годы.
- Обрыв перебора строго до корня, без самого корня. У полных квадратов вроде так теряется единственный делитель.
- Причисление единицы к простым числам. У единицы один делитель, а не два, поэтому она не простая и не составная. Число 2, наоборот, простое, и это единственное чётное простое.
- Вывод «прошёл тест Ферма, значит простое». Тест доказывает только составность; проход по одному основанию не доказывает ничего, что и показывает 1729.
- Проверка нескольких оснований теста Ферма как способ повысить надёжность. Для чисел Кармайкла бесполезны все взаимно простые основания сразу, нужен тест Миллера и Рабина.
- Смешивание задачи проверки на простоту с задачей разложения на множители. Для вердикта достаточно одного делителя, доводить разложение до канонического вида не требуется.
FAQ
До какого числа перебирать делители? До целой части включительно, а на практике удобнее записать условие цикла как . Если ни один кандидат не подошёл, число простое, и это строгий вывод.
Обязательно ли брать в кандидаты только простые числа? Нет, перебор всех чисел подряд даёт тот же вердикт, просто медленнее. Обычно берут компромисс: проверяют 2, а дальше только нечётные, экономя половину проверок без построения решета.
Можно ли доверять тесту Ферма? Только его отрицательному ответу: остаток, отличный от единицы, доказывает составность окончательно. Положительный ответ ничего не гарантирует, а на числах Кармайкла тест ошибается при любом взаимно простом основании.
Как проверяют числа в сотни цифр, например в RSA? Перебором это невозможно, поэтому используют тест Миллера и Рабина с несколькими случайными основаниями: вероятность ошибки после раундов не превосходит . Для доказательства простоты с сертификатом применяют более тяжёлые алгоритмы.
Коротко
- Считаем границу перебора: , значит проверяем делители до 41 включительно.
- Берём в кандидаты простые числа до этой границы, их 13; список даёт решето Эратосфена.
- Перебираем по порядку: 2, 3, 5 не подходят, а делится нацело, и перебор останавливается.
- Вердикт: 1729 составное, наименьший простой делитель 7, понадобилось 4 проверки делимости.
- Тест Ферма по основанию 2 даёт и ошибочно признаёт число простым: 1729 является числом Кармайкла, для надёжной проверки нужен тест Миллера и Рабина.
Похожие задачи
Как найти функцию Эйлера: разбор на числе 7560
Как найти функцию Эйлера: разбор числа 7560 по шагам, каноническое разложение, формула через произведение скобок по простым делителям, проверка мультипликативностью и теорема Эйлера.
Теория чисел/криптографияКак найти обратное по модулю: расширенный алгоритм Евклида
Как найти обратное по модулю: разбор на числах 37 и 120, условие существования через НОД, таблица расширенного алгоритма Евклида, приведение коэффициента и проверка остатка.
Теория чисел/криптографияКак найти первообразный корень: критерий и пример
Как найти первообразный корень по модулю: функция Эйлера, критерий через её простые делители, проверка кандидатов 2, 3, 5 и 6 по модулю 41 и таблица индексов.
Теория чисел/криптографияКак решить систему сравнений: китайская теорема об остатках
Как решить систему сравнений x = 2 (mod 3), x = 3 (mod 5), x = 2 (mod 7): проверка взаимной простоты модулей, сборка ответа по китайской теореме об остатках и проверка подстановкой.
Теория чисел/криптографияКак решить сравнение по модулю: 42x = 30 (mod 78)
Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.
Теория чисел/криптографияКак найти НОК двух чисел: два способа с примером
Как найти НОК двух чисел на примере 126 и 120: разложение на простые множители со старшими степенями, формула через НОД, проверка ответа и задача про шестерни с зубьями.