迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中计算模乘逆

作者:迹忆客 最近更新:2023/12/21 浏览次数:

如果我们有两个数字 am,则 a 的模乘法逆元是模 m 下的 x,如果:

a * x % m = 1

在这种情况下,乘法逆只在 am 互质时才存在,即如果 am 的最大公约数是 1

x 的值可以从 1m-1


使用朴素迭代方法的模乘逆

假设我们需要在模 m 下找到 a 的乘法倒数。如果模乘逆存在,它的值可以从 1m-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 的函数,它以 am 作为输入并返回模数 ma 的乘法逆。

如果数字 a 在模 m 下没有 a 的乘法倒数,它将引发和 Exception

从上面的例子中,我们可以看到在模 2213 的模乘逆是 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 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,这是一种开源软件

Python 中 NumPy 数组的滑动平均值

发布时间:2023/12/24 浏览次数:145 分类:Python

本教程演示了如何在 python 中计算 numpy 数组的滑动平均值。滑动平均值通常用于通过计算特定时间间隔的数据平均值来研究时间序列数据。

在 Python 中计算马氏距离

发布时间:2023/12/24 浏览次数:125 分类:Python

有两个主要方法可用于在 Python 中查找两个 NumPy 数组之间的马氏距离,scipy 库中的 cdist() 函数和 numpy 包中的 numpy.einsum() 函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便