我想知道如何计算x ^ y mod z。 x和y非常大(不能适合64位整数),z将适合64位整数。 有一件事没有给出像x ^ y mod z那样的答案与(x mod z)^ y mod z相同。
答案 0 :(得分:3)
这是标准方法,伪代码:
function powerMod(b, e, m)
x := 1
while e > 0
if e % 2 == 1
x := (b * x) % m
e := e - 1
else
b := (b * b) % m
e := e / 2
return x
该算法通过平方或 square和multiply 方法称为取幂。
答案 1 :(得分:2)
如果您使用的是Java,请将x,y和z转换为BigInteger。
BigInteger xBI = new BigInteger(x);
BigInteger yBI = new BigInteger(y);
BigInteger zBI = new BigInteger(z);
BigInteger answer = xBI.modPow(yBI,zBI);