欧几里得和扩展欧几里得!!!

欧几里得:

是求两个数的最大公约数:

int gcd(int a, int b)
{
    if(b==0) return a;
    return gcd(b, a%b);
}

扩展欧几里得:

已知a, b求解二元一次方程ax+by =gcd(a, b)的一组解(x,y);

int exgcd(int a,int b,int &x,int &y)
{
     if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    int gcd=exgcd(b,a%b,x,y);
    int x2=x,y2=y;
    x=y2;
    y=x2-(a/b)*y2;
    return gcd;
}

猜你喜欢

转载自www.cnblogs.com/heyonghu/p/9747465.html