【乘法逆元】简单说说乘法逆元的求法

乘法逆元

一、定义

  若在mod p意义下,对于一个整数a,有a*b≡1(mod p),那么这个整数b即为a的 乘法逆元,同时a也为b的乘法逆元

二、求法

  (1).费马小定理

    当p为质数时,对于任意整数a,满足ap-a是p的整数倍

    在mod p意义下可以表示为

      ap-a≡0(mod p)

      即为ap≡a(mod p)

      所以ap-1≡1(mod p)

      即为a*ap-2≡1(mod p)

    所以ap-2即为a在 mod p 意义下的逆元

  (2).扩展欧几里得

    ax≡1(mod p)可以转化成ax+py=1的形式

    那么显然我们可以用扩展欧几里得算法解2元一次方程解出x

    扩展欧几里得算法请戳这里~

  (3).O(n)递推1~n的逆元

    

    我们就可以做到O(n)递推

    inv[i]=(p-p/i)*inv[p%i]%p;

    从某个dalao博客里盗的图欸嘿嘿

  (4).O(n)求阶乘的逆元

    我们假设有x使得 a!x≡1(mod p)

    则(a-1)!*ax≡1(mod p)

    所以说(a-1)!的逆元为 ax%p

    那么我们就可以先求出n!的逆元再倒推回去

  (5).欧拉定理

    由aφp(mod p)aφp1是a的逆元 
    模数不是素数时同样适用

  (6).一个小推论

     (a/b)%p=(a%(bp))/ p

      证明:

      (a/b)%p=a/b-⌊(a/b)/p⌋*p

           =a/b-⌊a/(b*p)⌋*p

           =a/b-⌊a/(b*p)⌋*b*p/b

           =(a%(bp) )/p

 

posted @ 2017-10-28 21:06  减维  阅读(11070)  评论(1编辑  收藏  举报