Войти Создать аккаунт

Числа и ввод · 35 из 43

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

Лабораторная по дискретной математике — та, после которой на лекции про RSA перестают кивать вслепую. Борис Аркадьевич: «Обратное к a по модулю m — такое x, что a·x даёт остаток 1 при делении на m. Ищут его расширенным алгоритмом Евклида: тот же Евклид, только по дороге ведём ещё и коэффициенты». Встроенный pow(a, -1, m) на этой лабораторной не принимается — он делает ровно то, что надо написать.

Что сделать

Найдите обратное к a по модулю m расширенным алгоритмом Евклида; если обратного нет, так и скажите.

Что приходит

  • a — число, к которому ищем обратное; бывает отрицательным и больше m

  • m — модуль, натуральное число

Что вернуть

Число x от 0 до m − 1, при котором a · x даёт остаток 1 при делении на m; если у a и m есть общий делитель больше 1 — None.

Допишите функцию obratnyy в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

Ограничение

  • Без pow — и своё имя так назвать нельзя

Обходные пути — тоже нарушение: eval, exec, getattr, имена с двойным подчёркиванием, импорт os, subprocess и им подобных.

Пример

a = 3, m = 11: 3 · 4 = 12 = 11 + 1, остаток 1 — обратное равно 4.

Тот же пример кодом
Вызов
obratnyy(3, 11)
Вернуть
4
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.