Как найти обратное по модулю: расширенный алгоритм Евклида
Дано: число и модуль . Найти: такое целое , что .
Обратный элемент по модулю существует ровно тогда, когда число и модуль взаимно просты, а вычисляется расширенным алгоритмом Евклида. Здесь , поэтому обратный есть и среди вычетов от 0 до 119 он единственный: ответ равен 13, то есть . Проверка укладывается в одну строку: . Калькулятор сверху проделывает то же самое для любой пары «число и модуль», ниже - решение по шагам.
Решение по шагам
Дано. , .
Найти. Целое из промежутка от 0 до 119, для которого .
Шаг 1. Проверяем, существует ли обратный вообще. Прежде чем что-то считать, нужно убедиться, что число и модуль взаимно просты. Прогоняем деления с остатком:
Последний ненулевой остаток равен единице, значит и обратный элемент существует. Сама лестница делений разобрана подробно в задаче про НОД двух чисел, здесь она нужна только как заготовка: те же три строки сейчас дадут и ответ.
Шаг 2. Дописываем к лестнице столбец коэффициентов. Идея расширенного алгоритма в том, чтобы рядом с каждым остатком вести число , для которого выполнено . Начальные значения очевидны: остаток 120 это нуль по модулю 120, поэтому у него ; у остатка 37 коэффициент . Дальше каждый новый коэффициент считается по той же формуле, что и остаток, с тем же неполным частным.
| Шаг | Деление | Остаток | Коэффициент при 37 |
|---|---|---|---|
| старт | - | 120 | 0 |
| старт | - | 37 | 1 |
| 1 | 9 | ||
| 2 | 1 | ||
| 3 | 0 | алгоритм остановился |
Каждая строка таблицы проверяется независимо, и это удобно на контрольной: остаток 9 должен быть сравним с , а - сходится.
Шаг 3. Читаем ответ из строки с остатком 1. Нужная строка - вторая: остаток там равен единице, а коэффициент равен 13. Разворачивая сравнение обратно в равенство целых чисел, получаем соотношение Безу:
Слагаемое с модулем при переходе к сравнению по модулю 120 исчезает, и остаётся ровно то, что требовалось: .
Шаг 4. Приводим коэффициент к стандартному представителю. Расширенный алгоритм часто выдаёт отрицательное число, и это не ошибка: достаточно прибавить модуль. Здесь коэффициент 13 уже лежит в промежутке от 0 до 119, поэтому шаг холостой. А вот для пары , алгоритм выдаёт , и ответом служит .
Шаг 5. Проверяем умножением. Обратный элемент обязан давать остаток 1, и проверка стоит одного умножения с делением:
Ответ. .
Почему обратный элемент есть не у каждого числа
Условие взаимной простоты не формальность, а ровно граница между разрешимой и неразрешимой задачей. Пусть обратный существует, то есть . По определению сравнения это значит, что разность делится на , то есть найдётся целое с равенством . Любой общий делитель чисел и делит левую часть, а значит делит и единицу. Единственный положительный делитель единицы - она сама, поэтому .
Обратное утверждение даёт соотношение Безу: если наибольший общий делитель равен единице, то найдутся целые и с , и этот самый и есть обратный элемент. Расширенный алгоритм Евклида как раз и предъявляет пару коэффициентов явно, поэтому доказательство существования и способ вычисления здесь - одно и то же действие.
Полезно посмотреть на ту же мысль глазами. Возьмём число 38 вместо 37 при том же модуле: . Любое произведение чётно, остаток чётного числа при делении на чётный модуль 120 тоже чётен, а единица нечётна - совпасть неоткуда. На графике «орбита остатков» в калькуляторе сверху это видно сразу: точки садятся только на чётные уровни, а горизонталь единицы пустует. Для взаимно простой пары картинка другая: остатки пробегают все вычеты ровно по одному разу, и ровно одна точка попадает на единицу.
Сколько вообще обратимых вычетов по данному модулю, считает функция Эйлера. Для получаем
то есть из 120 вычетов обратимы только 32 - их показывает второй режим графика. Особый случай - простой модуль: тогда с модулем взаимно просты все ненулевые вычеты, обратим каждый из них, и арифметика по такому модулю ведёт себя как обычные дроби. Именно поэтому в криптографии модуль почти всегда либо простой, либо произведение двух простых, а проверка числа на простоту идёт первым шагом всех построений.
Второй способ: через функцию Эйлера
Есть формула, которая даёт обратный элемент без всякого алгоритма Евклида. Теорема Эйлера утверждает, что при выполнено . Разделив показатель на одну единицу, получаем готовое выражение:
Для нашей задачи , поэтому . Считать такую степень в лоб не нужно, работает быстрое возведение в степень по модулю. Здесь выкладка и вовсе короткая: , то есть , а , то есть . Тогда , снова 13.
Для простого модуля функция Эйлера равна , и формула превращается в малую теорему Ферма: . Например, обратный к 5 по модулю 13 равен , и проверка сходится: .
У способа есть цена. Он требует знать , а это по сути разложение модуля на простые множители - задача несопоставимо более дорогая, чем несколько делений с остатком. Расширенный алгоритм Евклида работает за число шагов порядка логарифма от модуля и никакого разложения не требует, поэтому в программах обратный элемент ищут именно им. Формула Эйлера удобна в теории и в устном счёте для маленьких простых модулей.
Подбор множителя для маленьких модулей
Когда модуль двузначный или трёхзначный, ответ можно получить вообще без техники. Сравнение равносильно равенству с целым , откуда . Перебираем начиная с нуля и смотрим, когда числитель разделится нацело: 1, 121, 241, 361 не делятся на 37, а - готово. Четыре пробы, никаких таблиц.
Приём ценен ещё и как страховка. Если расширенный алгоритм дал ответ, его всё равно проверяют умножением, а перебор по сразу даёт и обратный элемент, и то самое неполное частное 4 из проверки. Но растёт он линейно по модулю: для четырёхзначных чисел перебор уже безнадёжен, а для модулей из криптографии бессмысленен в принципе.
Отдельно стоит помнить про приведение исходного числа. Если больше модуля или отрицательно, сначала берут остаток: обратный к 157 по модулю 120 - это обратный к 37, потому что , и ответ тот же самый. Это бесплатно уменьшает числа и снижает шанс арифметической ошибки.
Частые ошибки
- Ищут обратный, не проверив НОД. Если , обратного нет вовсе, и расширенный алгоритм выдаст не единицу, а этот самый НОД. Строка «остаток 1» в таблице просто не появится.
- Забывают привести отрицательный коэффициент. Коэффициент по модулю 26 - верный, но не канонический ответ: в ответ пишут . Прибавлять модуль нужно столько раз, сколько потребуется, чтобы попасть в промежуток от 0 до .
- Путают коэффициенты при числе и при модуле. В соотношении обратным служит множитель при 37, то есть 13, а не . Множитель при модуле в сравнении исчезает и в ответе не участвует.
- Считают, что простого числа достаточно. Важна взаимная простота с модулем, а не простота самого числа: у 5 по модулю 120 обратного нет, хотя 5 простое, ведь .
- Берут обратное по неверному модулю в RSA. Закрытая экспонента ищется как обратный элемент к открытой по модулю значения функции Эйлера, а не по модулю произведения простых. Подробный разбор с числами - в задаче про генерацию ключей RSA.
- Пытаются делить. Запись не означает дробь : в целых числах по модулю деления нет, есть только умножение на обратный элемент, и существует он далеко не всегда.
FAQ
Чем обратный элемент по модулю отличается от дроби? Дробь - рациональное число, а обратный элемент - целое число из промежутка от 0 до , произведение с которым даёт остаток 1. По модулю 120 роль «одной тридцать седьмой» играет 13, по модулю 121 у того же числа 37 обратный уже другой. Ответ всегда привязан к модулю, без него вопрос смысла не имеет.
Сколько обратных элементов у числа по данному модулю? Формально бесконечно много, но все они отличаются на кратное модуля и образуют один класс вычетов: 13, 133, 253 и так далее, а также . В ответ пишут наименьшего неотрицательного представителя класса, то есть 13. Внутри промежутка от 0 до обратный ровно один.
Что делать, если число больше модуля или отрицательное? Сначала привести его по модулю, взяв остаток. Для и остаток равен 37, значит обратный тот же самый - 13. Расширенный алгоритм отработает и без приведения, но с меньшими числами ошибиться труднее.
Зачем обратный элемент нужен на практике? На нём держится асимметричная криптография: закрытый ключ RSA - это обратный элемент к открытой экспоненте по модулю функции Эйлера. Кроме того, через обратный элемент решают линейные сравнения и делят в полях вычетов, где обычного деления нет.
Коротко
- Проверяем взаимную простоту: , значит обратный элемент существует и единственный среди вычетов от 0 до 119.
- Прогоняем расширенный алгоритм Евклида, ведя рядом с остатками столбец коэффициентов при 37: даёт , затем даёт .
- Строка с остатком 1 и содержит ответ: , то есть .
- Отрицательный коэффициент приводим прибавлением модуля, положительный оставляем как есть. Проверка обязательна: .
- Альтернативы: формула при известной функции Эйлера и перебор в равенстве , дающий и .
Похожие задачи
Как найти функцию Эйлера: разбор на числе 7560
Как найти функцию Эйлера: разбор числа 7560 по шагам, каноническое разложение, формула через произведение скобок по простым делителям, проверка мультипликативностью и теорема Эйлера.
Теория чисел/криптографияКак найти первообразный корень: критерий и пример
Как найти первообразный корень по модулю: функция Эйлера, критерий через её простые делители, проверка кандидатов 2, 3, 5 и 6 по модулю 41 и таблица индексов.
Теория чисел/криптографияКак сгенерировать ключи RSA: пример на малых числах
Как сгенерировать ключи RSA: разбор на числах p = 43 и q = 59, расчёт модуля и функции Эйлера, выбор открытой экспоненты, поиск закрытой расширенным алгоритмом Евклида, проверка шифрованием.
Теория чисел/криптографияКак быстро возвести в степень: бинарный алгоритм
Как быстро возвести число в степень по модулю: разложение показателя в двоичную запись, таблица квадратов, пошаговый расчёт 7 в степени 93 по модулю 101 и число умножений.
Теория чисел/криптографияКак решить систему сравнений: китайская теорема об остатках
Как решить систему сравнений x = 2 (mod 3), x = 3 (mod 5), x = 2 (mod 7): проверка взаимной простоты модулей, сборка ответа по китайской теореме об остатках и проверка подстановкой.
Теория чисел/криптографияКак решить сравнение по модулю: 42x = 30 (mod 78)
Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.