gpt4 book ai didi

java - Java 中使用 while 循环的 Project Euler 12

转载 作者:行者123 更新时间:2023-11-30 04:28:52 25 4
gpt4 key购买 nike

我想解决欧拉项目 Problem 12通过这种方式,但我遇到了一些问题,任何人都可以告诉我我在哪里犯了错误。

**问题 -

三角形数序列是通过自然数相加生成的。因此,第 7 个三角形数为 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 是第一个拥有超过 5 个约数的三角形数。

第一个拥有超过五百个约数的三角形数的值是多少?

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);}

}

}

最佳答案

您有一个空语句 while 循环:

while(j>0);

; 结束循环,因此它不断地在始终为 true 的条件 j>0 上循环,因此代码永远不会超过该点。

我首先不确定 while 循环的用途,即使您删除 ; 它仍然永远不会离开该循环。事实上我认为你不需要它。

其他一些注意事项:

  • 问题中提出的问题是“除数超过的第一个三角形数的值是多少?”第一个超过 500 的除数不一定正好是 500,这是您当前的检查。
  • 您没有在迭代之间清除 ls,因此 ArrayList 将继续累积所有三角形数字组合中的因子(您可以使用 ArrayList#clear 来执行这个)

关于java - Java 中使用 while 循环的 Project Euler 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15129039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com