快速幂取模
求a^b%c(这就是著名的RSA公钥的加密方法) 当a,b很大时,直接求解这个问题不太可能 你能想到哪些优化呢?
算法1:直观上,也许最容易想到的是利用a*b%c=((a%b)*a)%c,这样每一步都进行这种处理,这就解决了a^b可能太大存不下的问题,但这个算法的时间复杂度依然是O(n),根本没有得到优化。当b很大时运行时间会很长
算法2:另一种算法利用了分治的思想,可以达到O(logn)。
可以把b按二进制展开为b=p(n)*2^n+p(n-1)*2^(n-1)+...+p(1)*2+p(0)
转载
2010-08-24 00:05:00 ·
510 阅读 ·
0 评论