我一直在研究这个来自大量模数的维基百科的链接,这是伪代码。
function modular_pow(base, exponent, modulus)
result := 1
while exponent > 0
if (exponent mod 2 == 1):
result := (result * base) mod modulus
exponent := exponent >> 1
base = (base * base) mod modulus
return result
我不明白 wiki 中给出的解释。为什么我必须检查 exp%2 是偶数还是奇数。还有我为什么要做这三个操作?