📜  Python中的模幂运算(1)

📅  最后修改于: 2023-12-03 15:19:30.683000             🧑  作者: Mango

Python中的模幂运算

模幂运算是计算 (a^b) mod m 的一种高效的方式,其中a,b和m均为正整数。 这种计算方式在密码学和离散数学的领域中广泛使用。

在Python中,有几种实现模幂运算的方法。以下是其中的几种:

方法1:使用内置函数pow()

pow(a,b,m)函数用于计算 (a^b) mod m,其中a,b和m均为整数。该函数返回计算结果。示例:

a = 5
b = 3
m = 7
result = pow(a,b,m)
print(result) # 输出为 6
方法2:使用循环实现

使用循环实现模幂运算,步骤如下:

  1. 将 b 转化为二进制
  2. 从右往左扫描二进制,每遇到一个1就乘以 a^i,其中i是这个1在二进制表示中的位置
  3. 对每步得到的数取模m,最终得到(a^b) mod m的结果

示例代码如下:

a = 5
b = 3
m = 7

# 将 b 转化为二进制
binary = bin(b)[2:]

# 初始化结果为1
result = 1

# 从右往左扫描二进制
for i in range(len(binary)-1, -1, -1):
    if binary[i] == '1':
        result = (result * a) % m
    a = (a * a) % m

print(result) # 输出为 6
方法3:使用递归实现

使用递归实现模幂运算,步骤与使用循环的方法类似。但是,使用递归的方法可以避免手动转化为二进制,代码更加简洁。示例代码如下:

def pow_mod(a, b, m):
    if b == 0:
        return 1
    elif b % 2 == 0:
        return pow_mod((a * a) % m, b//2, m)
    else:
        return (a * pow_mod((a * a) % m, b//2, m)) % m

# 示例
a = 5
b = 3
m = 7
print(pow_mod(a,b,m)) # 输出为 6

以上是Python中实现模幂运算的几种方法。根据输入规模的不同以及算法实现的方式,不同的方法具有不同的效率。