📅  最后修改于: 2023-12-03 15:26:51.614000             🧑  作者: Mango
欧几里得算法是求两个数的最大公约数(GCD)的一种常用算法,也叫辗转相除法。该算法基于以下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
public class EuclideanAlgorithm {
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
}
int a = 60, b = 48;
int result = EuclideanAlgorithm.gcd(a, b);
System.out.println("GCD of " + a + " and " + b + " is " + result); // 输出 GCD of 60 and 48 is 12
gcd(int a, int b)
方法是使用递归来实现欧几里得算法的。判断条件 if (b == 0)
是为了确保可以找到正确的最大公约数,因为在 a mod b = 0 时,b 即为最大公约数。a < b
,则 a
和 b
的值会被交换,这样可以确保 a
始终大于或等于 b
。通过上述实现,我们可以使用欧几里得算法来计算两个数的最大公约数。递归实现方法几乎是所有解决 GCD 问题的最快方法。但是,如果传入的值过大,递归可能会导致 StackOverflowError 异常。