快速模幂

2019-04-13 14:25发布

对于 a^b mod k,怎么求解? 简单!!!,用暴力求出a^b不就解决了?要是数据很大呢?显然用暴力解决不了。。。 怎么简洁美观的解决这个问题?? 提示:a*b mod c = (a mod c )*b mod c  
将b表示成二进制形式 b = bnbn-1…b1b0a^b mod k = a^(bnbn-1…b1b0) mod k= a^(b0*2^0)*a^(b1*2^1)*…*a(bn*2^n) mod k= c0*c1*…*cn mod k= (c0 mod k) * c1 mod k)*…*cn) mod k     (*) 当 bi为0时, ci为1(*)有什么规律,怎么编程求解?