欧几里得及其扩展模板

1 int gcd(int a,int b) {
2     return b==0?a:gcd(b,a%b);
3 }
View Code
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 }
View Code
通过扩展欧几里得定理,可以求出a的模b乘法逆元。
由于 a*k mod b == 1 所以 a*k + b*n == 1 即求解方程中的k即可得到逆元 即函数中的x就是其逆元。
原文地址:https://www.cnblogs.com/zmin/p/7810028.html