【发布时间】:2015-03-08 10:15:14
【问题描述】:
我正在研究 Euler 项目的第十二题。都是关于三角形数的;我试图找到第一个具有 500 多个除数的三角形数。我写了一个程序来找到这个,但是,它没有给我正确的答案,我不明白为什么。我在下面提供了我的代码:
public class problemTwelve {
public static void main(String [] args) {
int i = 1;
int number = 1;
while(getDivisors(number) < 500) {
number += i;
i++;
}
System.out.println("The first triangle number to have greater than 500 divisors is: " + number);
}
private static int getDivisors(int triangleNum) {
int noOfDivisors = 0;
int numToTest = (int) Math.sqrt(triangleNum);
for(int i = 1; i <= numToTest; i++) {
if((triangleNum % i) == 0) {
noOfDivisors += 2;
}
}
if((numToTest * numToTest) == triangleNum) {
noOfDivisors--;
}
return noOfDivisors;
}
}
程序运行后给出的输出如下:
第一个大于 500 个除数的三角形数是:146611080
在项目 Euler 上输入这个数字作为答案后,我们可以看到它是错误的。我不知道我的程序哪里出错了......
【问题讨论】:
-
你应该将
number初始化为0。