两个数字的LCM

时间:2018-07-31 11:31:01

标签: java

伙计们,我是在网上找到此代码的,用于查找两个数字的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));
    }
}

1 个答案:

答案 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