当前位置: 首页 > 面试题库 >

Java中数组中所有数字的LCM

陆海阳
2023-03-14
问题内容

我有一个整数数组,我试图找到该数组中所有值的LCM(最小公倍数)。我已经lcm单独写了一个方法;它接受两个值作为输入,并返回lcm。我的lcm方法工作得很好,但是当我用它来查找所有值的LCM时,我得到了错误的答案。

这是我gcd和的lcm方法:

public static int gcd(int a, int b){
    if (a<b) return gcd(b,a);
    if (a%b==0) return b;
    else return gcd(a, a%b);
}


public static int lcm(int a, int b){
    return ((a*b)/gcd(a,b));

}

这是我对数组值的lcm的要求:

public static int lcmofarray(int[] arr, int start, int end){
    if ((end-start)==1) return lcm(arr[start],arr[end-1]);
    else return (lcm (arr[start], lcmofarray(arr, start+1, end)));
}

当我放入一个数字1到5为arr,0为as
start且数组的长度为的数组时end,得到30作为答案,而我想要60。当我放入一个包含从1到1的所有数字的数组时10,我得到840,而不是2520。我真的无法解释。

该算法应该有效-我已经脑力激荡了。无法弄清楚我的代码出了什么问题。

任何帮助将不胜感激。


问题答案:

如果您将gcd函数更改为

public static int gcd(int a, int b){
    if (a<b) return gcd(b,a);
    if (a%b==0) return b;
    else return gcd(b, a%b);
}

它应该工作正常。



 类似资料:
  • 问题内容: 我正在尝试编写一种方法,该方法将从Java中删除所有非字母字符,然后将String转换为小写字符串。我尝试使用正则表达式将所有非字母字符的出现替换为。但是,我得到的输出无法执行此操作。这是代码 但是,如果我尝试提供具有非字母的输入(例如或),则输出也将由它们组成,因为它们不会被删除。 输入示例 我得到的输出 预期的输出 问题答案: 问题是您的更改没有存储,因为字符串是不可变的。每个方法

  • 本文向大家介绍返回一个数组,该数组填充有JavaScript中数字的所有数字的位置值,包括了返回一个数组,该数组填充有JavaScript中数字的所有数字的位置值的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个函数,该函数需要一个正整数,并返回一个数组,该数组填充有该数字的所有数字的位置值。 例如- 让我们为该函数编写代码。 这个问题非常适合递归方法,因为我们将迭代数字的每个数字。因此,

  • 问题内容: 我有一个字符数组c [] [],每个索引都有不同的映射。例如: 我需要以字符串形式返回此数组的所有可能字符组合。也就是说,对于上述字符数组,我应该返回:“ ag”,“ ah”,“ ai”,“ bg”,“ bh”,“ bi”,“ cg”,“ ch”,“ ci”等对于上面只有两件事的字符数组,这样做很容易,但是如果有更多的数组,那么我不知道该怎么办…这就是我要大家提供的帮助!:) 问题答案

  • 问题内容: 我想知道如何在具有随机数的数组中的设置值之间打印所有数字。它还应说明有多少用户随机数高于设置值。这是一个外观的示例: 到目前为止,这是我的代码,我设法使其打印出最大的数字。 问题答案: 妳去 我所做的是添加类,而不是生成随机数。 使用可以在需要时分配更多内存的情况下分配更大的内存,以存储小于或大于499的值。 没有新的数组实现摘要: 这是对数组进行迭代并执行以下操作: 计算有500以上

  • 问题内容: 我有一列是整数数组类型。如何将所有这些合并到单个整数数组中? 例如:如果我执行查询: 我得到的结果集为: 如何获得最终结果? 问题答案: 您可以用来打开阵列,然后将它们放回一起:

  • 本文向大家介绍从Java字符串中获取所有数字,包括了从Java字符串中获取所有数字的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 为了仅显示上述字符串中的数字,我们使用了该方法并将所有字符替换为空。 以下是最后的示例,该示例仅显示字符串中的数字。 示例 输出结果