2013-12-14 49 views
1

項目歐勒問題10中的問題表示添加2000,000以下的所有質數。我嘗試了其他數字,它運行良好,但當我嘗試2000,000時,答案是錯誤的。這是爲什麼?這是我的代碼。項目歐勒#10得到錯誤的答案

Long number = scanner.nextLong(); 
Long sum = 17L; 
for (Long i = 11L; i <= number; i ++) { 
if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0 || i % 7 == 0) { 
} else { 
sum += i; 
} 
} 
System.out.println(sum); 
+0

您的代碼只能識別前4個素數。你將需要改變結構。你可以使用'List'作爲素數。當你知道一個數字是素數時,將它添加到列表中並檢查數字是否爲素數,然後檢查列表。 – kero

回答

0

你的黃金檢測算法是完全錯誤的,它會工作的(很小)的素數,但之後會翻倒非常快。

http://en.wikipedia.org/wiki/Primality_test

+0

爲什麼它不適用於大數字? – wormwood

+0

因爲它是完全錯誤的!閱讀鏈接。 –

+0

是的。這確實是錯誤的XD謝謝 – wormwood