快速幂总结

参考 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)




你可能感兴趣的:(快速幂总结)