使用while循环在java中投影Euler 12

使用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+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是第一个有超过五个除数的三角形数

第一个有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))您的循环甚至没有被执行。