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

欧几里得:

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

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;
}

 

posted on 2018-10-06 15:28  河涌湖  阅读(118)  评论(0)    收藏  举报

导航