扩展欧几里算法

int exgcd(int a, int b, int &x, int &y)
{
	if(b ==0)
	{
		x = 1, y = 0;
		return a;
	}
	int r = exgcd(b, a%b, x, y);
	int t = x;
	x = y;
	y = t - a/b*y;
	
	return r;				
}
/*
	扩展欧几里得算法在使用的过程中应该配合gcd使用,
	先判定c是不是gcd(a, b)的倍数
*/
/*扩展欧几里得算法求不定方程*/
bool linear_equation(int a,int b,int c,int &x,int &y)
{
    int d=exgcd(a,b,x,y);
    if(c%d)
        return false;
    int k=c/d;
    x*=k; y*=k;    //求得的只是其中一组解
    return true;
}

你可能感兴趣的:(扩展欧几里算法)