浅谈乘法逆元

乘法逆元

逆元作用

用于对于除法的取模运算,下面给出关于除一个数变成乘上他的逆元,在模意义下结果不变的证明:

证明:ab%p=ab1%p

bb11(modp)bb1%p=1ab%p=ab1%p=abbb1%p=ab1%p

证毕

一.单个数逆元求解方法

  1. 扩展欧几里得

  2. 欧拉函数求解:

    ap,则有 aaϕ(p)11(modp)

  3. 费马小定理:

    ap ,且p为质数,则有 aap21(modp)

二.线性求逆

  1. 用处:用于求出1~n,1<=n<=p 每一个数在模 p 的意义下的逆元,时间复杂度为 O(n)

  2. 算法:

    设模数 p=ki+r,r<i,i1,2,3...,p1,在模 p 的意义下,可以得到ki+r0(modp)

    i1r1i1r1(modp)相乘可以得到:

    (ki+r)i1r10(modp)kii1r1+i1rr10(modp)kr1+i10(modp)i1kr1(modp)k=pi,r=p%ii1pi(p%i)1(modp)(1)i1(ppi)(p%i)1(modp)i1=(pp/i)(p%i)1%pr<ii1r1(p%i)1线

注:(1)这一步是为了保证正数,在模p的意义下加一个p没有任何变化

三.离线逆元

问题

对于给定的整数a1,a2,a3,..,an,求其在模 p 意义下的逆元,其中p 为质数

  1. 首先证明逆元是完全积性的,及:a1b1(ab)1(modp)

    证明:

    aa11(modp)bb11(modp)aba1b11(modp)(ab)(ab)11(modp)a1b1(ab)1(modp)

  2. per=i=1nai,易得 per1=i=1nai1

    ai1=peri1peri1,peri1=ai+1peri+11

    由此就可以依次推出每一个数的乘法逆元,代码比较好写,所以就不放了

  3. 奇技淫巧

    toi=j=1iaj,backi=j=inaj,per1=i=1nai1

    ai1=per1toi1backi+1

    这个也可以用来求逆元

posted @   轩Demonmaster  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示