扩展欧几里得
若要求a在%n意义下的逆x,那么要找一组解使得x,y满足 ax+by=1 ,使用ex_gcd之后,会得到一组 |x|+|y| 最小的解(至于这个我也不是很清楚为什么),以下我试着证明此时若 x<0 则 x>−n .
(默认a,n>0)若存在一组解x,y使得
x<=−n
,设
x=−n−k(k>=0)
a(−n−k)+ny=1
−an−ak+ny=1
−ak+n(y−a)=1
因为 k>=0 所以 −ak<=0 ,又因为 n>0 ,所以 y−a>0
原来的 |x|+|y|=(n+k)+y 现在的 |x|+|y|=k+(y−a) ,明显后者小,所以原命题得证。
知道这个之后,对ex_gcd求出来的x, (x+n)%n 就是要求的值了
欧拉定理
定理:对于给定的整数n>1,对于任意的在%n意义下的缩系(简化剩余系)中的a,有 aphi(n)%n=1 ,因此a的逆元为 aphi(n)−1 ,如果n为素数的话,有 phi(n)=n−1 那么 an−2 就是逆元了