Computing modular multiplicative inverse in Python
If we have two numbers a
and m
, then a
the modular multiplicative inverse of is m
modulo x
if:
a * x % m = 1
In this case, the multiplicative inverse exists only if a
and m
are relatively prime, that is, if the greatest common divisor of a
and m
is 1
.
x
The value of can range from 1
to m-1
.
Modular multiplicative inverse using naive iterative method
Suppose we need to m
find a
the multiplicative inverse of modulo . If a modular multiplicative inverse exists, its value can be from 1
to m-1
. Therefore, we iterate over this range and check the condition for modular multiplicative inverse. If any number in the range satisfies the condition, we take the number as modular multiplicative inverse.
def find_mod_inv(a, m):
for x in range(1, m):
if (a % m) * (x % m) % m == 1:
return x
raise Exception("The modular inverse does not exist.")
a = 13
m = 22
try:
res = find_mod_inv(a, m)
print("The required modular inverse is: " + str(res))
except:
print("The modular inverse does not exist.")
Output:
The required modular inverse is: 17
Here we have a find_mod_inv
function called that takes a
and m
as input and returns the multiplicative inverse of m
modulo .a
If number does not have a multiplicative reciprocal modulo , it will raise a a
sum .m
a
Exception
From the above example, we can see that the modular multiplicative inverse of 22
under module is .13
17
pow()
Modular inverse
using built-in functions
We can also use Python's built-in function pow()
to calculate the modular multiplicative inverse of a number.
a = 38
m = 97
res = pow(a, m - 2, m)
print("The required modular inverse is: " + str(res))
Output:
The required modular inverse is: 23
pow()
To compute a modular multiplicative inverse
using the method, pow()
the first argument to the method will be the number whose modular inverse you want to find, the second argument will be the modulus to subtract 2
, and the last argument will be the order of the moduli.
However, for Python 3.8
versions and later, we can replace the second parameter with -1
.
a = 38
m = 97
res = pow(a, -1, m)
print("The required modular inverse is: " + str(res))
Output
The required modular inverse is: 23
For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.
Related Articles
Enumerating a dictionary in Python
Publish Date:2025/05/05 Views:98 Category:Python
-
The function in Python enumerate() returns an object of enumeration type and adds a counter variable to iterate over a list or other type of collection. It makes looping over such objects easier. When we pass an enumeration object to list()
Changing dictionary values in Python
Publish Date:2025/05/05 Views:108 Category:Python
-
This tutorial will discuss various ways to change the value of a particular key in Python dictionary. We can do this by using the following methods. dict.update() method for cycle. Dictionary Unpacking dict.update() How to change dictionary
Finding the maximum value in a Python dictionary
Publish Date:2025/05/05 Views:60 Category:Python
-
This tutorial explains how to get a key with the maximum value in Python. Since the method has changed from the previous Python versions, it also lists some sample codes to clarify the concepts. Use operator.itemgetter() the method to get t
How to read input from stdin in Python
Publish Date:2025/05/05 Views:124 Category:Python
-
This tutorial discussed stdin the methods of reading input from in Python. You can read directly from the console or from a file name specified in the console. In Python, fileinput.input() use stdin fileinput We can use the read module in P
Maximum integer in Python
Publish Date:2025/05/05 Views:55 Category:Python
-
This tutorial will discuss the maximum integer value in different versions of Python and how we can get it. In Python 2, integers and long integers are different data types. The maximum value of an integer is 2 31 -1. If the value exceeds t
Get a list of time zones using Python
Publish Date:2025/05/05 Views:107 Category:Python
-
When developing real-world applications, software developers must ensure that the application can support users from both their own country and other parts of the world. Since most countries have different time zones and many people around
Convert NumPy array to list in Python
Publish Date:2025/05/05 Views:101 Category:Python
-
Lists and arrays are the two most basic and commonly used collection objects in Python. They are both mutable and are used to store a collection of elements under a common name and each element has a specific location that can be used to ac
Appending 2D Arrays in Python
Publish Date:2025/05/05 Views:64 Category:Python
-
In Python, we can have ND arrays. We can use NumPy module to process arrays in Python. This tutorial demonstrated the different methods you can use to append values to a two-dimensional array in Python. Use append() the function to ap
Sliding average of NumPy arrays in Python
Publish Date:2025/05/05 Views:190 Category:Python
-
The sliding average is often used to study time series data by calculating the average of data at a specific time interval. It is used to eliminate some short-term fluctuations and study data trends. When studying stock price trends, the si