模板:最大公约数

很快ACM校集训队要选拔了,想学一波算法,顺便记下模板。

最大公约数

功能

输入两个数ab,输出ab的最大公约数.

最大公约数:
1. 既可以整除a,也可以整除b的数,组成集合C
2. 集合C中的最大元素,即最大公约数

思路

辗转相除法:
1. 用ab中较大值max除以较小值min
2. 若整除,则结果为min
3. 若不整除,则令ab分别等于min和余数mod,递归步骤1

原理

ab的最大公约数等于minmod的最大公约数。

时间复杂度

O(log n)

模板

/**
  * @param a: number A
  * @param b: number B
  * @return: the greatest common divisor of A and B
  * @other: 0 < b, b <= a
  */
int GCD(int a, int b) {
  return b == 0 ? a : GCD(b, a % b);
}

猜你喜欢

转载自blog.csdn.net/fast_g/article/details/80543704