判断两个数是否为非互质数的计算原理基于 最大公约数 (GCD)。这个方法的核心是使用 欧几里得算法,它能高效地计算出两个数的最大公约数。通过最大公约数判断,如果 GCD 大于 1,则两个数是非互质数;如果 GCD 为 1,则它们是互质数。

原理

欧几里得算法的基本思想是通过递归地将两个数的较大数减小,直到找到两个数的最大公约数。欧几里得算法的关键定理是:

两个数的最大公约数等于较小数和两者之差的最大公约数,即:
gcd(a, b) = gcd(b, a % b)
这个递归过程会继续,直到其中一个数为 0,此时另一个数就是最大公约数。

步骤

代码

private int check(int a, int b) {
    int max = Math.max(a, b);
    int min = Math.min(a, b);

    if(min == 0) return max;

    int t = max % min;
    return check(min, t);
}

最小公倍数LCM

LCM = a * b / GCD(a, b)

转载请注明出处