参考 http://baike.baidu.com/link?url=iA-pT7GX0fEgeg3Bb3Mk_k2Xt-lgjSoX6nGJKCFDv1JVvHwQGwMnFXRI4VImEf2LMIYnSS3TfWjMZhtGiuD6t_
开始没看懂,后来看了看幂运算的性质,拆分出下面1)2)3)4)步,才明白快速幂。
1.幂运算的性质
m^(a+b) = m^a*m^b
2.幂运算举例
a^30 = a^(16+8+4+2) = a^(2^4+2^3+2^2+2^1)
.. a^(2^4) = a^(2^3+2^3) = a^(2^3)* a^(2^3) 1)
a^(2^3) = a^(2^2+2^2) = a^(2^2)*a^(2^2) 2)
a^(2^2) = a^(2^1+2^1) = a^(2^1)*a^(2^1) 3)
a^(2^1) = a^(2^0+2^0) = a^(2^0)*a^(2^0) 4)
a^(2^i) = a^(2^(i-1)) * a^(2^(i-1)) ; i = 0...4
3.程序流程
根据上面 1)2)3)4)可以得出程序
另结果result = 1
另 base = a^(2^i); 初始 i = 0
1)当 n > 0执行,否则退出
2)当二进制某位为1则 result *= base;
3)更新 base , base = base * base;
4)n 左移 1 位, 跳转 1)