示例:
(30000000 ^ 30000000)mod 40000000 =?
我一直在使用欧拉理论和指数属性,但仍然无法得到答案 任何人都知道如何通过理论和简单的计算器来计算它?
我的试验是通过费马的小定理减少30000000的指数,但指数仍然太大,无法计算计算器。
答案 0 :(得分:0)
# b^e (mod m)
function powerMod(b, e, m)
x := 1
while e > 0
if e % 2 == 1
x := (b * x) % m
b := (b * b) % m
e := floor(e / 2)
return x
答案 1 :(得分:0)
使用对分和平方法进行功率计算,并在每个步骤中减少中间结果以给定除数为模。
您还可以使用负余数来获得更小的中间结果。
另请注意,n = 40000000 = 4 * 10 ^ 7 = 2 ^ 9 * 5 ^ 7是一个复合数,因此Euler totient函数给出phi(n)= 2 ^ 8 * 4 * 5 ^ 6 = 16 * 10 ^ 5 = 160000。现在首先减小指数mod phi(n)-1。
这最后一种方法只有在你知道除数的分解时才有效。