【发布时间】:2018-05-05 21:13:47
【问题描述】:
我试图找到可以被 1 到 20 的所有数字整除的最小正数。我们得到 2520 是可以被 1 到 10 的每个数字整除的最小数字任何剩余。我的 find() 找到从 2520 开始的数字,该数字可以被 1-20 的所有数字整除,但由于某种原因返回 2520。我找不到我的 find() 有什么问题?
public class Solution {
public ArrayList<Integer> list = new ArrayList<Integer>();
// creating a list of integers from 1 to 20
public ArrayList<Integer> addtolist() {
for (int i = 1; i <= 20; i++) {
list.add(i);
}
return list;
}
// finds the smallest positive number that is evenly divisible by all
of the numbers from 1 to 20
public int find() {
int num = 2520;
while(true) {
for(int i: list) {
if(num % i == 0) {
return num;
}
else {
num = num + 1;
}
}
}
}
public static void main(String[] args) {
Solution sol = new Solution();
sol.addtolist();
System.out.println(sol.find());//2520
}
}
【问题讨论】:
-
找出小于或等于 20 的素数,然后找出小于或等于 20 的每个素数的最大幂。将它们相乘。那是
16*9*5*7*11*13*17*19=232792560 -
这被称为最小公倍数 LCM 以防万一你想知道用谷歌搜索什么,Eratosthenes SoESoE
标签: java algorithm math division greatest-common-divisor