對於一個小項目(問題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