欧几里得扩展算法
#include<stdio.h>
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;y=0;return a;
}
int t=exgcd(b,a%b,x,y);
int x0=x,y0=y;
x=y0;
y=x0-(a/b)*y0;
return t;
}
int main()
{
int a,b,c,x,y,gcd;
printf("请输入公式 a*x + b*y + c = 0");
printf("\na=");scanf("%d",&a);
printf("b=");scanf("%d",&b);
printf("c=");scanf("%d",&c);
gcd=exgcd(a,b,x,y);
printf("解得\nx=%d y=%d",c/gcd*x,c/gcd*y);
return 0;
}
该公式只可求特解,
下面教如何推导x的其他解
求y的通解同上;也可由已知x的通解化简成y的通解