int extend_Euclid(int a, int b, int &x, int &y)
{
if(b==0)
{
x = 1;
y = 0;
return a;
}
int r = extend_Euclid(b, a%b, y, x);
y -= a/b*x; //这里已经是递归,回溯的过程了,x,y已经颠倒了
return r;
}
以上是求 a*x +b*y == gcd(a,b)某一组特解X1,Y1的过程
所以a*x + b*y == gcd(a,b)的通解为 X = X1 - b/gcd(a,b)*t
Y = Y1 + a/gcd(a,b)*t t为任意整数。

本文详细介绍了扩展欧几里得算法,该算法用于求解线性方程a*x+b*y=gcd(a,b)的一组特解X1,Y1,并给出通解公式。通过递归实现,展示了解方程的具体过程。
980

被折叠的 条评论
为什么被折叠?



