我最近開始學習Java,現在我正在嘗試解決一些Eulerproject問題。Java中的算術錯誤
任務是:數字600851475143最大的素數是多少?
我能創造這個代碼,但我得到一個錯誤:
代碼
package exercises;
import java.util.ArrayList;
public class Euler3 {
// Main code
public static void main(String[] args) {
System.out.println(getPrimeFactors(15));
}
// Code for breaking a number to prime factors
public static ArrayList getPrimeFactors(int n){
ArrayList factors = new ArrayList();
int d = 2;
while(n > 1){
while(n%d == 0){
factors.add(d);
n /= d;
}
d +=d;
}
return factors;
}
}
錯誤:
Exception in thread "main" java.lang.ArithmeticException:/by zero
at exercises.Euler3.getPrimeFactors(Euler3.java:22)
at exercises.Euler3.main(Euler3.java:9)
我在做什麼錯?
謝謝
您的邏輯似乎不正確。它只會被2的冪分,最終你會得到一個溢出,它會嘗試除以0. – threenplusone 2013-03-05 00:47:30