对于一个小项目(问题10项目欧拉),我试图总结所有低于200万的素数。所以我用了一个蛮力方法,并且从0到2'000'000进行迭代,并检查数字是否为素数。如果它是我加上的总和:为什么Java不能告诉我什么时候我不能使用Integer?
private int sum = 0;
private void calculate() {
for (int i = 0; i < 2000000; i++) {
if (i.isPrime()) {
sum = sum + i;
}
}
sysout(sum)
}
这个计算的结果是1179908154,但这是不正确的。所以我改变了int到BigInteger,现在我得到了正确的总和142913828922.显然int的范围溢出了。但为什么Java不能告诉我这些? (例如,例外)
顺便说一句,BigInteger的是矫枉过正和长 – DJClayworth 2010-05-14 13:38:13
为什么你不使用Eratosthenes筛而不是蛮力强迫它? – CoolBeans 2010-05-14 14:21:29
@DJClayworth:虐待尝试 @CoolBeans:暴力强度足够快,只需要几分之一秒 – RoflcoptrException 2010-05-14 14:24:23