快速幂算法,顾名思义就是求幂时速度很快(废话
看了很多博客里的解释,都说得很玄奥……其实快速幂很容易解释的。
比如求3的20次幂,一般我们会用循环乘法来求,也就是需要循环20次。
但是再想想,3^20 = 9^10,这样只需要循环10次了。继续,9^10 = 81^5。
这里似乎进行不下去了,其实还可以继续,81^5 = 81*81^4 = 81*6561^2 = 81*43046721
数一下,这个步骤只有五步。DEC(20)=BIN(10100),即:幂(BIN)有几位,循环次数就是几。
另外,判断一个数的奇偶性,不但可以使用mod 2,也可以使用 &1。他们只是在负整数部分略有不同罢了,一般求正整数幂 &1 的效率可以更高。
理解了这些,写一个快速幂算法就很容易了。
http://blog.csdn.net/runninghui/article/details/8905019
http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html