我最近开始学习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