模数指数 pow() 有 3 个参数
提供带有 3 个参数的 pow()
pow(a, b, c)
评估模幂运算 a b mod c :
pow(3, 4, 17) # 13
# equivalent unoptimized expression:
3 ** 4 % 17 # 13
# steps:
3 ** 4 # 81
81 % 17 # 13
对于使用模幂运算的内置类型,只有在以下情况下才有可能:
- 第一个论点是
int
- 第二个论点是一个
int >= 0
- 第三个论点是一个
int != 0
这些限制也出现在 python 3.x 中
例如,可以使用 pow
的 3 参数形式来定义模块化反函数:
def modular_inverse(x, p):
"""Find a such as a·x ≡ 1 (mod p), assuming p is prime."""
return pow(x, p-2, p)
[modular_inverse(x, 13) for x in range(1,13)]
# Out: [1, 7, 9, 10, 8, 11, 2, 5, 3, 4, 6, 12]