Java 两个数字的LCM

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

伙计们,我在网上找到了这段代码,用来查找两个数字的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)
    {
        // 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,检查所有血淋淋的细节