模數指數 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]