Java 两个数字的LCM
伙计们,我在网上找到了这段代码,用来查找两个数字的L.C.M,但我不理解Java 两个数字的LCM,java,Java,伙计们,我在网上找到了这段代码,用来查找两个数字的L.C.M,但我不理解gcd()函数 当我尝试输入a=2,b=3时,它显示为6,但当我自己调试时,我无法得到答案。如果(a==b)返回a,我就是这里的struct 你能帮我了解一下它的功能吗。请使用逐步更新功能进行更新 //Java程序,用于查找两个数字的LCM class Test { // Recursive method to return gcd of a and b static int gcd(int a, int b
gcd()
函数
当我尝试输入a=2,b=3时,它显示为6,但当我自己调试时,我无法得到答案。如果(a==b)返回a,我就是这里的struct
你能帮我了解一下它的功能吗。请使用逐步更新功能进行更新
//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));
}
}
来自维基百科():
在数学中,两个或多个整数的最大公约数(gcd)不是全部为零,它是除以每个整数的最大正整数。例如,8和12的gcd为4
使用欧几里德算法
形式上,该算法可以描述为:
gcd(a,0)=a
gcd(a,b)=gcd(b,a模b)
在哪里
a模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
相同号码的LCM是号码本身。请阅读。FWIW,检查所有血淋淋的细节