我正在研究欧拉项目的第十二个问题。这都是关于三角形数的;我正在尝试找到第一个除数超过 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;
}
}
程序运行时给出的输出如下:
The first triangle number to have greater than 500 divisors is: 146611080
在欧拉项目中输入这个数字作为答案后,我们可以发现它是错误的。我不知道我的程序哪里出了问题......
最佳答案
您检查的数字似乎不是三角形。看看代码,检查的第二个数字是 2,它不是三角形数字。
尝试移动线条
i++;行前
number+=i;
关于java - 为什么我的程序不能按预期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925297/