一. 原理
将某个数字多次自乘化为它的若干次幂的少次相乘,从而减少计算量,提高效率。转化的方法如下:将指数写成二进制之后,从右到左,如果为0则跳过,如果为1则乘底数的2次幂,如:100^10D = 100^1010B= 100^10B * 100 ^ 1000B=100^2D * 100^8D。
二. 取余运算重要性质
(a + b) % p = (a % p + b % p) % p
(a - b) % p = (a % p - b % p) % p
(a * b) % p = (a % p * b % p) % p
使用在快速幂中a ^ b % p = ((a % p)^b) % p
((a+b) % p + c) % p = (a + (b+c) % p) % p
((a*b) % p * c)% p = (a * (b*c) % p) % p
(a + b) % p = (b+a) % p
(a * b) % p = (b * a) % p
(a+b) % p = ( a % p + b % p ) % p
((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p