mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
583a614fef
* Deleted greatest_common_divisor def from many files and instead imported the method from Maths folder * Deleted greatest_common_divisor def from many files and instead imported the method from Maths folder, also fixed comments * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Deleted greatest_common_divisor def from many files and instead imported the method from Maths folder, also fixed comments * Imports organized * recursive gcd function implementation rolledback * more gcd duplicates removed * more gcd duplicates removed * Update maths/carmichael_number.py * updated files * moved a file to another location --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
14 lines
432 B
Python
14 lines
432 B
Python
from maths.greatest_common_divisor import gcd_by_iterative
|
|
|
|
|
|
def find_mod_inverse(a: int, m: int) -> int:
|
|
if gcd_by_iterative(a, m) != 1:
|
|
msg = f"mod inverse of {a!r} and {m!r} does not exist"
|
|
raise ValueError(msg)
|
|
u1, u2, u3 = 1, 0, a
|
|
v1, v2, v3 = 0, 1, m
|
|
while v3 != 0:
|
|
q = u3 // v3
|
|
v1, v2, v3, u1, u2, u3 = (u1 - q * v1), (u2 - q * v2), (u3 - q * v3), v1, v2, v3
|
|
return u1 % m
|