扩展欧几里得
若要求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 就是逆元了