1 int gcd(int a,int b) { 2 return b==0?a:gcd(b,a%b); 3 }
1 void gcd(int a, int b, int &d, int &x, int &y) 2 { 3 if(!b) { d = a; x = 1; y = 0; } 4 else { gcd(b, a%b, d, y, x); y -= x*(a/b); } 5 }
通过扩展欧几里得定理,可以求出a的模b乘法逆元。
由于 a*k mod b == 1 所以 a*k + b*n == 1 即求解方程中的k即可得到逆元 即函数中的x就是其逆元。