Я работаю над проблемой двенадцать на проекте Эйлера. Это все о числах треугольников; Я пытаюсь найти первый номер треугольника с более чем 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
При вводе этого номера в качестве ответа на проект Эйлера мы видим, что это неправильно. Я не знаю, где я ошибся в своей программе ...
Вы должны инициализировать 'number' в '0' , –