代码:
def quick_mod(a, b, n):
a = a % n
result = 1
while 0!=b:
if b&1 == 1:
result = (result*a) % n
b = b >> 1
a = (a*a) % n
print(result)
解析:
由于用笔写比较容易表示幂,所以用笔写来解释。
可以看到,由于代码中result和a都是对n取模的值,所以不会出现数字过大的问题。
比如,直接算66^77 % 8,
如果先算66^77的话,数字太长,可能溢出。