算法学习(4):gcd和exgcd

GCD

inline int gcd(int a,int b) { return b == 0 ? a : gcd(b,a % b); }

EXGCD

  1. 第一种
int exgcd(int a, int b, int &x, int &y)
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    int d = exgcd(b, a % b, x, y), x0 = x, y0 = y;
    x = y0;
    y = x0 - (a / b) * y0;
    return d;
}
  1. 第二种
int exgcd(int a, int b, int &x, int &y)
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x); //这里交换了x和y
    y -= (a / b) * x;
    return d;
}
上一篇:曹冲养猪(中国剩余定理)


下一篇:数论问题(1)