欢迎访问宙启技术站
智能推送

Java函数实现两个整数之间的最大公约数

发布时间:2023-07-22 17:13:11

最大公约数(Greatest Common Divisor,简称GCD)是两个或多个整数的公共除数中最大的一个。求两个整数之间的最大公约数,可以使用辗转相除法(欧几里德算法)或更相减损法。

1. 辗转相除法:

辗转相除法思想是通过不断用较小数除较大数,然后用较大数对较小数取余,将余数作为新的较小数,重复上述过程直到余数为0。此时,较大数就是最大公约数。

Java代码实现如下:

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

2. 更相减损法:

更相减损法思想是通过不断用较大数减较小数,然后用减数对差取余,将余数和较小数再进行减法运算,重复上述过程,直到两个数相等。此时,相等的数就是最大公约数。

public static int gcd(int a, int b) {
    // 确保a大于等于b
    if (a < b) {
        int temp = a;
        a = b;
        b = temp;
    }
    
    while (a != b) {
        int diff = a - b;
        // 确保较大数大于等于较小数
        if (diff < b) {
            int temp = diff;
            diff = b;
            b = temp;
        }
        a = diff;
    }
    return a;
}

辗转相除法和更相减损法均可以求得两个整数的最大公约数。在实际应用中,一般使用辗转相除法,因为更相减损法在两数差较大时,会出现大量的减法操作,效率较低。

通过以上代码,我们可以用辗转相除法或更相减损法求得两个整数之间的最大公约数。