Как вычислить число обратное по модулю
Перейти к содержимому

Как вычислить число обратное по модулю

Обратный элемент в кольце по модулю

Калькулятор для вычисления обратного элемента по модулю ниже, теория под ним.

Обратный элемент в кольце по модулю

Рассчитать
Обратный элемент
Ссылка Сохранить Виджет

Обратным к числу a по модулю m называется такое число b, что:
,
Обратный элемент обозначают как .

Для нуля обратного элемента не существует никогда, для остальных же элементов обратный элемент может как существовать, так и нет.
Утверждается, что обратный элемент существует только для тех элементов a, которые взаимно просты с модулем m.

Для нахождения обратного элемента по модулю можно использовать Расширенный алгоритм Евклида.

Для того, чтобы показать это, рассмотрим следующее уравнение:

Это линейное диофантово уравнение с двумя переменными, см. Линейные диофантовы уравнения с двумя переменными. Посколько единица может делиться только на единицу, то уравнение имеет решение только если .
Решение можно найти с помощью расширенного алгоритма Евклида. При этом, если мы возьмём от обеих частей уравнения остаток по модулю m, то получим:

Таким образом, найденное x и будет являться обратным к a.

RSA с нуля

при этом числа и должны быть взаимно простыми. Это значит, что не делится на . Соответственно единственный их общий делитель (он же наибольший) — это 1.

Для расчета обратного числа по модулю применяется расширенный алгоритм Евклида и соотношение Безу.

Соотношение Безу говорит, что существуют такие целые числа , , которые удовлетворяют следующему выражению:

Для нашего случая:

Если взять левую и правую часть по модулю , то

Чтобы найти наше обратное, нам нужно вычислить коэффициент в соотношении Безу.

Иногда получается отрицательным, можем взять его положительный модуль по без ущерба для исходного уравнения.

Обратное число к а по модулю m

Обратное число Даны два целых числа m и a. Если не существует обратного числа к a по модулю m, то выведите число −1, а если существует, то выведите это число (ответ должен лежать в границах от 0 до m−1). Входные данные В единственной строке входных данных даны два целых числа 1 Выходные данные Выведите ответ на задачу. Примеры Ввод 179 57 Вывод 22

b = 0 a = list(map(int, input().split())) b = pow(a[1], a[0] - 2, a[0]) if pow(a[1], a[0] - 2, a[0]) == 0: print(-1) else: print(b) 

Отслеживать

30.3k 3 3 золотых знака 18 18 серебряных знаков 55 55 бронзовых знаков

Обратный по модулю

Фактическая польза от обратного по модулю в том, что он заменяет деление. А именно, если нам в рамках вычислений хочется найти значение $\frac \pmod

$, то мы считаем это значение эквивалентным значению $A \cdot B^ \pmod

$.

Чтобы найти обратное по модулю, есть несколько разных техник, но самая популярная — теорема Эйлера:

Теорема Эйлера

Или это же выражение для простого модуля $p$ называется малой теоремой Ферма:

Малую теорему Ферма можно достаточно просто доказать комбинаторно. Поставим другую задачу — подсчет числа способов раскрасить $p$-угольник в $a$ цветов. Раскрасим каждую вершину в какой-то цвет. Всего таких раскрасок $a^p$. Заметим, что поскольку $p$ простое, то у всех раскрасок, кроме тех, где все раскрашено в один цвет поворотом получается ровно $p$ раскрасок. Значит всего различных раскрасок $\frac

+ a$. Это число должно быть целым, а значит $a^p — a$ делится на $p$, откуда $a^

— 1 \equiv 0 \pmod

$.

Как теперь научиться делить? Все просто:

Значит, для простых $p$ достаточно посчитать $a^$ с помощью быстрого возведения в степень

Диофантово уравнение

Альтернативный вариант — свести уравнение $ax \equiv 1 \pmod

$ к диофантову уравнению $$ ax + py = 1$$

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *