프로젝트 오일러 문제 10을 풀고있었습니다. 삼각형 수열은 자연 수를 더함으로써 생성되었습니다. 따라서 7 번째 삼각형 수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28이 될 것입니다. 첫 번째 삼각형 수의 값을 알아 내기 위해 500 개 이상의 제수를 구하십시오.int 값이 음수로 증가하고 주어진 루프를 중단하지 않는 이유는 무엇입니까?
public class ProjectEulerProb12HighestDivisorTriangNumb {
public static void main(String[] args) {
int minLim = 7; //As seven is already given in prob statement
System.out.println(
"The first triangular no to have more than 500 divisors is " + getNaturalnumb(minLim));
}
public static int getNaturalnumb(int natNum) {
int div = 1, TrianNum = 1;
while (div <= 500) {
natNum++;
TrianNum = getTrianNum(natNum);
div = getDivCount(TrianNum);
}
return TrianNum;
}
public static int getTrianNum(int n) { //Generating Triangular Number for any Natural no. n
int TrianNum = 0;
for (int i = 1; i <= n; i++) {
TrianNum += i;
}
System.out.println(" The current TrianNum is " + TrianNum);
return TrianNum;
}
public static int getDivCount(int n) {// Getting Divisor count for any Triangular no. n
int DivCount = 1, nextnum = 1;
while (n != nextnum || DivCount != 500) {
if (n % nextnum == 0) {
System.out.println(
" The current n is "
+ n
+ " Current nextnum is "
+ nextnum
+ " current Divcount is "
+ DivCount);
DivCount++;
}
nextnum++;
}
return DivCount;
}
}
내가 얻고 있었다 런타임 예외 다음과 같습니다 :
나는 다음과 같은 프로그램을 썼다 내가 잘못 어디에Exception in thread "main" java.lang.ArithmeticException:/by zero
at ProjectEulerProb12HighestDivisorTriangNumb.getDivCount(ProjectEulerProb12HighestDivisorTriangNumb.java:47)
at ProjectEulerProb12HighestDivisorTriangNumb.getNaturalnumb(ProjectEulerProb12HighestDivisorTriangNumb.java:20)
at ProjectEulerProb12HighestDivisorTriangNumb.main(ProjectEulerProb12HighestDivisorTriangNumb.java:8)
내가 방법 getDivCount에 인쇄 문에 넣어 보려면 및 다음과 같은 결과를 얻었다 :
The current TrianNum is 36
The current n is 36 Current nextnum is 1 current Divcount is 1
The current n is 36 Current nextnum is 2 current Divcount is 2
The current n is 36 Current nextnum is 3 current Divcount is 3
The current n is 36 Current nextnum is 4 current Divcount is 4
The current n is 36 Current nextnum is 6 current Divcount is 5
The current n is 36 Current nextnum is 9 current Divcount is 6
The current n is 36 Current nextnum is 12 current Divcount is 7
The current n is 36 Current nextnum is 18 current Divcount is 8
The current n is 36 Current nextnum is 36 current Divcount is 9
The current n is 36 Current nextnum is -36 current Divcount is 10
The current n is 36 Current nextnum is -18 current Divcount is 11
The current n is 36 Current nextnum is -12 current Divcount is 12
The current n is 36 Current nextnum is -9 current Divcount is 13
The current n is 36 Current nextnum is -6 current Divcount is 14
The current n is 36 Current nextnum is -4 current Divcount is 15
The current n is 36 Current nextnum is -3 current Divcount is 16
The current n is 36 Current nextnum is -2 current Divcount is 17
The current n is 36 Current nextnum is -1 current Divcount is 18
Exception in thread "main" java.lang.ArithmeticException:/by zero
int 값이 음수로 증가하는 이유는 무엇입니까? (n! = nextnum)? 도와주세요!
아마도 (while! n! = nextnum && DivCount! = 500)' – Eran
런타임 예외로 수정되었습니다 ... – VMi
숫자가 500 개 이하의 제수를 가질 수 있으며 nextnum은 여전히 n 일 수 있습니다. 또한 나는 500 개의 약수가있는 첫 번째 숫자를 OR 조건으로 가져와야합니다. – VMi