伙计们,我是在网上找到此代码的,用于查找两个数字的L.C.M,但我无法理解gcd()
函数。
当我尝试输入a = 2,b = 3
时。显示为6,但是当我调试自己时,无法获得答案。我在这里if (a == b) return a
中构造;
能帮我了解它的功能吗?请使用逐步功能进行更新
// Java程序来查找两个数字的LCM。
class Test
{
// Recursive method to return gcd of a and b
static int gcd(int a, int b)
{
// Everything divides 0
if (a == 0 || b == 0)
return 0;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return gcd(a-b, b);
return gcd(a, b-a);
}
// method to return LCM of two numbers
static int lcm(int a, int b)
{
return (a*b)/gcd(a, b);
}
// Driver method
public static void main(String[] args)
{
int a = 15, b = 20;
System.out.println("LCM of " + a +" and " + b + " is " + lcm(a, b));
}
}
答案 0 :(得分:0)
来自维基百科(https://en.wikipedia.org/wiki/Greatest_common_divisor):
在数学中,两个或多个不全为零的整数的最大公约数(gcd)是将每个整数相除的最大正整数。例如,8和12的gcd为4。
使用Euclid算法
该算法的正式形式可以描述为:
gcd(a,0)= a
gcd(a,b)= gcd(b,a mod b)
其中
a mod b = a-b [a / b]
如果两个参数都大于零,则可以使用以下基本术语来编写算法:
gcd(a,a)= a
gcd(a,b)= gcd(a-b,b),如果a> b
gcd(a,b)= gcd(a,b-a),如果b> a