当前位置: 首页 > 知识库问答 >
问题:

Java中的LCM(最低公倍数)

谷梁宏恺
2023-03-14

我需要帮忙做这个循环。我的课程作业之一是制作LCM课程。

Sample output:
(8,12) LCM is 24
(4,3) LCM is 12
(5,10,20) LCM is 20
(18,24,52) LCM is 936
(12,10,26) LCM is 780
(99,63,24) LCM is 5544
(62,16,24) LCM is 1488

到目前为止,我有两个数字,但我不知道如何做3个数字。我们应该在其他类上使用方法,所以这就是我在LCM类中使用的方法。

public class LCM {
    private int n, x, s = 1, t = 1;

    public LCM()
    {
        n = 0;
        x = 0;
        s = 1;
        t = 1;
    }
    public int lcmFind(int i, int y) {
        for (n = 1;; n++) {
            s = i * n;
            for (x = 1; t < s; x++) {
                t = y * x;
            }
            if (s == t)
                break;
        }
        return (s);
    }
}

共有3个答案

薛承志
2023-03-14

试试吧

public int lcm(int... a) {
    for (int m = 1;; m++) {
        int n = a.length;
        for (int i : a) {
            if (m % i != 0) {
                break;
            }
            if (--n == 0) {
                return m;
            }
        }
    }
}
洪俊捷
2023-03-14

我发现了这个链接,我想这是最简单和干净的解决方案:

/**
* Calculate Lowest Common Multiplier
*/
public static int LCM(int a, int b) {
    return (a * b) / GCF(a, b);
}

/**
* Calculate Greatest Common Factor
*/
public static int GCF(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return (GCF(b, a % b));
    }
} 
姚洲
2023-03-14

如果你想得到3个数字的LCM,你可以使用你的方法lcmSearch如下:

int a = 2;
int b = 3;
int c = 5;
LCM l = new LCM();
int lcm = l.lcmFind(l.lcmFind(a, b), c);

建议:

  • nxst变量设置为lcmFind中的局部变量。因为您只需要在lcmFind方法中使用它们,并且需要在每次调用lcmFind时重置它们的值

编辑
如果你需要创建一个参数个数可变的方法,你应该检查varargs。所以你会得到这样的结果:

public int lcmFind(int.. args) {
    // args is actually array of ints.
    // calculate lcm of all values in array.
    // usage: lcmFind(1,4) or lcmFind(1,5,6,3)
}

您可以使用您的第一个版本的lcmSearch,它包含2个参数,并使用它计算许多值的lcm。

编辑2
如果您只需要2和3-args版本的lcmFind,则只需添加3-arg版本即可:

public int lcmFind(int a, int b, int c) {
    return lcmFind(lcmFind(a, b), c); 
}
 类似资料:
  • 返回两个或两个以上数字的最小公倍数。 使用最大公约数(GCD)公式和 lcm(x,y) = x * y / gcd(x,y) 来确定最小公倍数。 GCD公式使用递归。 const lcm = (...arr) => { const gcd = (x, y) => (!y ? x : gcd(y, x % y)); const _lcm = (x, y) => x * y / gcd(x,

  • 有人能帮我吗,我不知道如何找到最低的公共倍数。 例如,数字4和5是20。这就是我想要在代码中实现的。 谢谢你

  • 本文向大家介绍java求最大公约数与最小公倍数的方法示例,包括了java求最大公约数与最小公倍数的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java求最大公约数与最小公倍数的方法。分享给大家供大家参考,具体如下: Gongyueshu.java文件: 此处需要由控制台输入参数,eclipse环境运行的设置步骤为Run》Run Configurations进入运行的调试配置界面

  • Python3 实例 以下代码用于实现最小公倍数算法: 实例(Python 3.0+)# Filename : test.py # author by : www.runoob.com # 定义函数 def lcm(x, y): # 获取最大的数 if x > y: greater = x else: greater = y while(True): if((greater % x == 0) a

  • 本文向大家介绍PHP编程求最大公约数与最小公倍数的方法示例,包括了PHP编程求最大公约数与最小公倍数的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP编程求最大公约数与最小公倍数的方法。分享给大家供大家参考,具体如下: PS:这里再为大家推荐几款在线计算工具供大家参考使用: 在线一元函数(方程)求解计算工具: http://tools.jb51.net/jisuanqi/eq

  • 本文向大家介绍js计算最大公约数和最小公倍数代码实例,包括了js计算最大公约数和最小公倍数代码实例的使用技巧和注意事项,需要的朋友参考一下 一、计算最大公约数 1、小学时候一般采用质因数分解法,一般使用短除得到结果,下面用一种最初级的方法求最大公约数 2、使用欧里几德算法,辗转相除法。具体原理自行百度。下面给出两种代码算法 递归 迭代 二、最小公倍数,最小公倍数的算法,是两个数的乘积除以最大公倍数