跳转至

最大公约数

最大公因数(英语:highest common factor,hcf)也称最大公约数(英语:greatest common divisor,gcd)是数学词汇,指能够整除多个非零整数的最大正整数。

欧几里得算法(辗转相除法)

int gcd(int a, int b) {
  while (b != 0) {
    int tmp = a;
    a = b;
    b = tmp % b;
  }
  return a;
}

如果两个数 \(a\)\(b\) 满足 \(\gcd(a, b) = 1\),我们称 \(a\)\(b\) 互质。

更相减损术

大整数取模的时间复杂度较高,而加减法时间复杂度较低。针对大整数,我们可以用加减代替乘除求出最大公约数。

int gcd(int a, int b) {
  while (a != b) { 
    if (a > b) {
      a -= b;
    } else {
      b -= a;
    }
  }
  return a;
}