当我搜索平方求幂时,我发现了其中的递归方法,但是后来我偶然发现了这段伪代码,我无法完全理解。
function powermod(base, exponent, modulus) {
if (base < 1 || exponent < 0 || modulus < 1)
return -1
result = 1;
while (exponent > 0) {
if ((exponent % 2) == 1) {
result = (result * base) % modulus;
}
base = (base * base) % modulus;
exponent = floor(exponent / 2);
}
return result;
}
如果您能用简单易懂的话语提供一些见解,将会非常有帮助。
base^exponent mod modulus
。 - Nikos M.if (base < 0n)
- Joakim L. Christiansen