java 如何求最大公约数

java 如何求最大公约数

作者:Rhett Bai发布时间:2026-02-14阅读时长:0 分钟阅读次数:2

用户关注问题

Q
Java中有哪些方法可以计算两个数的最大公约数?

我想知道在Java编程中,计算两个整数的最大公约数有哪些常用的方法?

A

Java中计算最大公约数的常用方法

在Java中,计算最大公约数通常使用辗转相除法(欧几里得算法)或更相减损术。辗转相除法通过递归或循环实现,效率较高。此外,从Java 9开始,Math类提供了gcd方法,可以直接调用Math.gcd(a, b)来获得两个整数的最大公约数。

Q
如何用递归方式实现Java计算最大公约数?

我想写一个Java递归函数来求两个整数的最大公约数,可以具体怎么实现?

A

使用递归实现最大公约数的示例代码

递归方式实现最大公约数主要使用辗转相除法,基本思想是两数a和b的最大公约数等于b和a % b的最大公约数,直到b为0时,a即为最大公约数。Java实现示例代码:

public static int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}

调用方法gcd(a, b)即可返回两个整数的最大公约数。

Q
怎样使用Java循环来计算最大公约数?

不想用递归,如何用循环结构在Java中求两个数的最大公约数?

A

循环方式实现计算最大公约数的示例代码

循环实现同样基于辗转相除法,利用while循环持续计算余数,直到余数为零。示例代码如下:

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

该方法可以避免递归带来的堆栈开销,并且同样高效。