乘法逆元


数学上乘法逆元的定义是 ax=1,则xa的乘法逆元ax=1,则x是a的乘法逆元

我们这里讨论关于取模运算的乘法逆元。

定义:

满足 axmodb=1ax\mod b = 1时,称 xa关于模b的逆元x为a关于模b的逆元

所以逆元有什么用呢?

题目中可能会出现操作中间树很大的情况,如求解:

36/3mod73 * 6 / 3 \mod 7

规定中间变量不能超过7,于是操作步骤为:

原式=((36)mod7)/3mod7原式 = ((3*6)\mod 7)/3 \mod 7

=4/3= 4/3

发现无法整除。

可以求出除数3关于模数7的逆元为5,根据定义,在7模数下,3 * 5 = 1,所以1/3 = 5.

于是我们可以把/3/3替换成55,避免了无法整除的问题。

于是问题来到了如何求逆元。

费马小定理:

ab1modb=1a^{b-1} \mod b = 1

改写一下:

ab2amodb=1a^{b-2} * a\mod b = 1

所以 ab2a^{b-2} 就是a模b的逆元。一般这个数用快速幂来算。

最后更新于