求解a^n
次方,正常求解需要O(n)时间,若n很大,则需要更快速的算法
快速幂
基础:任何一个数都可以用二进制表示
若需求3^11
,可将指数进行一个logN
的变换,11 = 2^3 + 2^1 + 2^0
,只需算3^8,3^2,3^1
,再将其相乘。
1 | /** |
快速幂取模
利用了快速幂的思想,但取模时有公式:1
2a ^ b % c = (a % c)^b % c
(a * b) % c=(a % c)*(b % c) % c
1 | public class Quick_power_mod { |