📅  最后修改于: 2023-12-03 15:19:30.683000             🧑  作者: Mango
模幂运算是计算 (a^b) mod m
的一种高效的方式,其中a,b和m均为正整数。 这种计算方式在密码学和离散数学的领域中广泛使用。
在Python中,有几种实现模幂运算的方法。以下是其中的几种:
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
使用循环实现模幂运算,步骤如下:
示例代码如下:
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
使用递归实现模幂运算,步骤与使用循环的方法类似。但是,使用递归的方法可以避免手动转化为二进制,代码更加简洁。示例代码如下:
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中实现模幂运算的几种方法。根据输入规模的不同以及算法实现的方式,不同的方法具有不同的效率。