我需要編寫一個代碼來計算前200個素數,但只要我無法解釋一切。我用一段代碼作爲參考(http://crab.rutgers.edu/~dhong/cs325/chapter3/PrimeNumber.java)。我有一個計算前200個素數的程序,但我不明白其中的公式
所有代碼:
public class Opdracht3 {
public static void main(String[] args) {
int limiet = 200;
int counter = 1;
int testpriem = 3;
boolean isPriem;
while (counter <= limiet) {
isPriem = true;
for (int i = 2; i <= testpriem/2; i++) {
if (testpriem % i == 0) {
isPriem = false;
break;
}
}
if (isPriem) {
System.out.println(counter + ": " + testpriem);
counter++;
}
testpriem++;
}
}
}
下面的代碼部分驗證如果數量是複合。如果testpriem是合成的,則會從循環中出來並重新開始。否則,它將繼續並打印質數testpriem。
的問題是在這裏:
for (int i = 2; i <= testpriem/2; i++) {
if (testpriem % i == 0) {
isPriem = false;
break;
}
}
我測試會發生什麼我,並拉上它認識到計算合成所需的因子。 (有4個除數是2,有9個除數是3,有221個除數是13)但是我爲什麼大驚小怪。
有什麼想法?
不是答案,而是旁白:在您的代碼中,「prime」作爲「priem」存在拼寫錯誤。我建議修復它們。 –
@EdCottrell他們不是拼寫錯誤,OP是荷蘭人。素數是我們語言中的「priemgetallen」;)。 OP:素數的定義是它只能被自身除或1。 – nbokmans
...並且必須大於1。 – Stefan