/*
最大公约数问题
描述:对于给定正整数x,y,求它们的最大公约数d,并且求出参数a, b使得ax+by=d。
*/
#include <stdio.h>
static int gcd(int x, int y, int *a, int *b)
{
int q = x/y;
int r = x%y;
int d, a1, b1;
if(r == 0)
{
*a = 0;
*b = 1;
return y;
}
d = gcd(y, r, &a1, &b1);
*a = b1;
*b = a1 - b1*q;
return d;
}
int main()
{
int x = 100;
int y = 30;
int d, a, b;
d = gcd(x, y, &a, &b);
printf("%d * %d + %d * %d = %d\n", a, x, b, y, d);
return 0;
}