Modular inverses
What is an inverse?
Recall that a number multiplied by its inverse equals 1. From basic arithmetic we know that:
The inverse of a number A is 1/A since A * 1/A = 1 (e.g. the inverse of 5 is 1/5)
All real numbers other than 0 have an inverse
Multiplying a number by the inverse of A is equivalent to dividing by A (e.g. 10/5 is the same as 10* 1/5)
What is a modular inverse?
In modular arithmetic we do not have a division operation. However, we do have modular inverses.
The modular inverse of
A (mod C)
isA^-1
(A * A^-1) ≡ 1 (mod C)
or equivalently(A * A^-1) mod C = 1
Only the numbers coprime to C (numbers that share no prime factors with C) have a modular inverse (mod C)
// X is the mod inverse of A
(A * X) ≡ 1 (mod M)
(A * X) mod M = 1
// X lies in range {1, 2, … M-1}, within the range of M
// X cannot be 0 as A*0 (mod M) will never be 1
// The inverse exists only iff A and M are relatively prime (i.e. if gcd(A, M) = 1)
Example
(A * X) mod M = 1
(3 * X) mod 11 = 1
Since (4*3) mod 11 = 1, 4 is modulo inverse of 3(mod 11).
One might think 15 is valid as “
(15*3) mod 11
” is also 1,but 15 is not in range {1, 2, … 10}, so not valid.
The Euclidean Algorithm
Recall that the Greatest Common Divisor (GCD) of two integers A and B is the largest integer that divides both A and B.
The Euclidean Algorithm is a technique for quickly finding the GCD of two integers.
Last updated
Was this helpful?