在线模板_欧几里得及扩展欧几里得算法

在线模板_欧几里得及扩展欧几里得算法

朴素欧几里得

朴素欧几里得算法模板

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

扩展欧几里得

对于不完全为 0 的非负整数 a,b,
gcd(a,b)表示 a,b 的最大公约数,
必然存在整数对 x,y ,
使得 gcd(a,b)=ax+by

扩展欧几里得算法模板

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

你可能感兴趣的:(ACM之模板)