算法思路
- m和n, m % n = 0, 则n = gcd(m, n)
- m % n = c.. r 则 x = gcd(n, r)
原理
假设m = 8, n = 4 最大公约数为4, 表示8可以拆成4的倍数 假设 m = 8,n = 3, 则 m = 2 * n + 2 =》 求gcd(3, 2) m = 8, n = 5, 则 m = 1 * n + 3 => 求 gcd(5, 3) m = 12, n =8, 则 m = 1 * n + 4 => 求gcd(8,4) =>4
模板
其中要保证a >= b 大数除小数
public int gcd(int a, int b) {
if (a % b == 0) return b;
return gcd(b, a % b);
}