使用while循环在java中投影Euler 12
我想用这种方法解决欧拉项目,但遇到了一些问题。有人能告诉我哪里出了错吗 **问题- 三角形数序列是通过添加自然数生成的。所以第七个三角形的数字是1+2+3+4+5+6+7=28。前十个任期为: 1、3、6、10、15、21、28、36、45、55 让我们列出前七个三角形数字的系数:使用while循环在java中投影Euler 12,java,Java,我想用这种方法解决欧拉项目,但遇到了一些问题。有人能告诉我哪里出了错吗 **问题- 三角形数序列是通过添加自然数生成的。所以第七个三角形的数字是1+2+3+4+5+6+7=28。前十个任期为: 1、3、6、10、15、21、28、36、45、55 让我们列出前七个三角形数字的系数: 1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 我们可以看到28是第一个有超过五个除数的三角形数
1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28
我们可以看到28是第一个有超过五个除数的三角形数
第一个有500个以上除数的三角形数的值是多少
import java.util.ArrayList;
import java.util.List;
public class Problem12 {
int j=1;
static int num;
List<Integer> ls = new ArrayList<Integer>();
public void trangule(int i){
num= i*(i+1)/2;
while(j>0);
{
for(j =1; j<num/2; j++){
if(num%j==0)
{int temp= num/j;
ls.add(temp);
}
if(ls.size()==500)
{
System.out.println(ls.get(ls.size()-1));
}
}
}
}
public static void main(String[] args) {
Problem12 ob =new Problem12();
for(int i =1; i<=500; i++)
{ ob.trangule(i);}
}
}
import java.util.ArrayList;
导入java.util.List;
公共课问题12{
int j=1;
静态整数;
List ls=新的ArrayList();
公共交通(国际一){
num=i*(i+1)/2;
而(j>0);
{
对于(j=1;j您有一个空语句,而循环:
while(j>0);
;
结束循环,因此它在条件j>0下不断循环,该条件始终为真,因此代码永远不会超过该点
我不确定这个循环首先是为了什么,即使你删除;
它也永远不会离开这个循环。事实上,我认为你不需要它
还有一些需要注意的事项:
- 问题中的问题是“第一个超过500个除数的三角形数的值是多少?”第一个超过500个除数的三角形数不一定正好有500个除数,这是您当前的检查
- 您没有在迭代之间清除
ls
,因此ArrayList
将继续从所有合并的三角形数中累积因子(您可以使用此操作)
您遇到的问题是什么?我什么都没有得到。我的逻辑是错误的吗?我在网上看到了其他解决方案,但没有得到这些解决方案…显示您得到的输出。您正在主方法中打印num,输出是什么?我正在尝试获取System.out.println(ls.get(ls.size()-1))您的循环甚至没有被执行。