求乘法逆元

由于在计算除法时,mod 运算不能直接加在除数被除数后,因此需要将 n / a (mod b )转化为 n * x (mod b ),以便于进行模运算。求 x 的过程就称为求逆元。

对于 a 、b (a 与 b 互素)满足 n / a ≡ n * x (mod b ),则称 x 为 a 模 b 的逆元;

一般有两种求逆元的方式:扩展欧几里得求逆元和欧拉-费马定理求逆元;

1、扩展欧几里得求逆元:

见(欧几里得与扩展欧几里得);

http://www.cnblogs.com/cenariusxz/p/4323872.html

2、欧拉-费马定理求逆元(通过快速幂实现):

根据欧拉函数 φ(x) 表示小于自变量 x 并与 x 互素的自然数的个数;

根据欧拉定理(基本是用剩余系累加推出来的)

 a 与 x 互素时:

a φ(x)≡ 1 (mod x)

即 a * a φ(x)-1≡ 1 (mod x)

所以 :

  a φ(x)-1 即为 a 模 x 的逆元;

而费马小定理求的则是欧拉函数的特殊情况:

当 x 为素数时,φ(x)= x - 1 ;

因此当 a 与 x 互素且 x 为素数时:

  a x - 2 即为 a 模 x 的逆元;

原文地址:https://www.cnblogs.com/cenariusxz/p/4330820.html