关于求解p^x mod q的问题

如题,其中p和q都是素数,而x是数值十分大的合数,则p^x mod q的一种解法可为:

第一步,可把x写成a*b的形式,即p^x=(p^a)^b,其中p^a是可以通过简单的人为计算得出的并且满足p^a>q,设c=p^a,则p^x通过降次得到c^b;

第二步,把c展开,写成c=dq+e的形式,则c^b=(dq+e)^b,由二项式定理可知c^b≡e^b(mod q),则问题转化成了求解e^b(mod q)的问题;

第三步,用迭代的思想,重复第一步和第二步,直到p和x都为素数,这时候就很容易得解了。

例子:求解2^100 mod 7。

解:2^100=16^25=(7*2+2)^25,则2^100=(7*2+2)^25≡2^25(mod 7)

2^25=32^5=(7*4+4)^5,则2^25=(7*4+4)^5≡4^5(mod 7)

4^5=1024,1024=146*7+2,即1024≡2(mod 7)

所以,2^100≡2(mod 7),即2^100 mod 7=2。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

若有不足之处还请大家批评指正,谢谢大家!

猜你喜欢

转载自blog.csdn.net/qq_40981822/article/details/88777272
mod