在 Python 中计算模乘逆
如果我们有两个数字 a
和 m
,则 a
的模乘法逆元是模 m
下的 x
,如果:
a * x % m = 1
在这种情况下,乘法逆只在 a
和 m
互质时才存在,即如果 a
和 m
的最大公约数是 1
。
x
的值可以从 1
到 m-1
。
使用朴素迭代方法的模乘逆
假设我们需要在模 m
下找到 a
的乘法倒数。如果模乘逆存在,它的值可以从 1
到 m-1
。因此,我们遍历这个范围并检查模乘逆的条件。如果范围内的任何数字满足条件,我们将数字作为模乘逆。
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.")
输出:
The required modular inverse is: 17
在这里,我们有一个名为 find_mod_inv
的函数,它以 a
和 m
作为输入并返回模数 m
下 a
的乘法逆。
如果数字 a
在模 m
下没有 a
的乘法倒数,它将引发和 Exception
。
从上面的例子中,我们可以看到在模 22
下 13
的模乘逆是 17
。
使用 pow()
内置函数的模乘逆
我们还可以使用 Python 的内置函数 pow()
来计算一个数的模乘法逆。
a = 38
m = 97
res = pow(a, m - 2, m)
print("The required modular inverse is: " + str(res))
输出:
The required modular inverse is: 23
要使用 pow()
方法计算模乘法逆,pow()
方法的第一个参数将是要找到模逆的数字,第二个参数将是模减去 2
,最后一个参数将是模数的顺序。
但是,对于 Python 3.8
及更高版本,我们可以将第二个参数替换为 -1
。
a = 38
m = 97
res = pow(a, -1, m)
print("The required modular inverse is: " + str(res))
输出
The required modular inverse is: 23
相关文章
在 Python 中将 NumPy 数组转换为列表
发布时间:2023/12/24 浏览次数:102 分类:Python
-
本教程演示了如何将 numpy 数组转换为 Python 中的列表。列表和数组是 Python 中两个最基本且最常用的集合对象。
Python 中追加二维数组
发布时间:2023/12/24 浏览次数:158 分类:Python
-
本教程讨论如何在 Python 中将值附加到二维数组。在 Python 中,我们可以有 ND 数组。我们可以使用 NumPy 模块在 Python 中处理数组。
在 Python 中将数组写入文本文件
发布时间:2023/12/24 浏览次数:68 分类:Python
-
本教程演示如何在 python 中将数组保存到文本文件中。读取和写入文件是构建许多用户使用的程序的一个重要方面。Python 提供了一系列可用于资源处理的方法。
Python 导出到 Excel
发布时间:2023/12/24 浏览次数:129 分类:Python
-
有四种主要方法可用于在 Python 中将数据写入 Excel 文件,DataFrame.to_excel() 方法、xlwt 库、openpyxl 库和 XlsWriter 库。
使用 Selenium Python 在浏览器中打开和关闭标签页
发布时间:2023/12/24 浏览次数:92 分类:Python
-
本教程演示了如何在 Python 中使用 Selenium 在浏览器中自动打开一个新标签页。Selenium 是强大的 Web 自动化和测试工具。我们使用 Selenium 编写脚本,它可以控制 Web 浏览器并执行特定操作。
Conda 安装 Cv2
发布时间:2023/12/24 浏览次数:106 分类:Python
-
本教程演示了如何在 Python 中为 anaconda 用户安装 cv2 模块。互联网上有许多可用的 Python IDE。一种这样的 Python IDE 是 Anaconda,这是一种开源软件
使用 OpenCV solvepnp() 函数解决 PnP 问题
发布时间:2023/12/24 浏览次数:85 分类:Python
-
本教程讨论在 Python 中使用 OpenCV 中的 solvepnp 函数。OpenCV 库是一个开源库,旨在帮助完成计算机视觉任务。
Python 中 NumPy 数组的滑动平均值
发布时间:2023/12/24 浏览次数:145 分类:Python
-
本教程演示了如何在 python 中计算 numpy 数组的滑动平均值。滑动平均值通常用于通过计算特定时间间隔的数据平均值来研究时间序列数据。
在 Python 中计算马氏距离
发布时间:2023/12/24 浏览次数:125 分类:Python
-
有两个主要方法可用于在 Python 中查找两个 NumPy 数组之间的马氏距离,scipy 库中的 cdist() 函数和 numpy 包中的 numpy.einsum() 函数。