若$ab ≡ 1 (mod p)$,则称$b$是$mod p$意义下$a$的乘法逆元,可记为$a^{-1}$
定义反过来也是成立的,即$a$是$mod p$意义下$b$的乘法逆元
乘法逆元
意义
模运算中的除法是不符合四则运算法则的,然而加减乘都符合。所以数学家们利用乘法逆元来完成除法的需求。
例如有同余方程$a * b ≡ c ( mod p )$,若要消去$b$,可乘上$b$在模$p$意义下的乘法逆元$b^{-1}$,由于$b * b^{-1} ≡ 1 ( mod p )$,因此$a ≡ c * b^{-1} ( mod p )$
扩展欧几里得算法
直接求解此同余方程$a*b ≡ 1 ( mod p )$即可
欧拉定理
由于$a^{φ(n)} ≡ 1 ( mod p )$,故任意的$a$的逆元可以是$a^{φ(n)-1}$
线性递推
当要求解$1...N$每个数的逆元(模意义相同)时,采用线性递推最为高效
设此时模意义为$p$,可以将$p$表示为$p = k * i + r$
显然$$k * i + r ≡ 0 ( mod p )$$
两边同时乘以$i^{-1} * r^{-1}$可得$$k * i * i^{-1} * r ^ {-1} + r * i^{-1} * r^{-1} ≡ 0 ( mod p )$$$$k * r^{-1} + i^{-1} ≡ 0 ( mod p )$$
移项即可$$ i^{-1} ≡ -k * r^{-1} ( mod p )$$
其意义也就是$$i^{-1} ≡ -left lfloor dfrac{p}{i} ight floor * (p \% i)^{-1} ( mod p )$$
这就是递推公式了