返回課程

輸出質數

重要性:3

一個大於 1 的整數如果無法被 1 和它本身以外的任何數字整除,則稱為 質數

換句話說,n > 1 如果無法被 1n 以外的任何數字整除,則為質數。

例如,5 是質數,因為它無法被 234 整除。

撰寫一個輸出從 2n 區間內質數的程式碼。

對於 n = 10,結果將會是 2,3,5,7

附註:程式碼應該適用於任何 n,而不針對任何固定值進行微調。

這個任務有很多演算法。

我們使用巢狀迴圈

For each i in the interval {
  check if i has a divisor from 1..i
  if yes => the value is not a prime
  if no => the value is a prime, show it
}

使用標籤的程式碼

let n = 10;

nextPrime:
for (let i = 2; i <= n; i++) { // for each i...

  for (let j = 2; j < i; j++) { // look for a divisor..
    if (i % j == 0) continue nextPrime; // not a prime, go next i
  }

  alert( i ); // a prime
}

有很多空間可以最佳化。例如,我們可以從 2i 的平方根尋找除數。但無論如何,如果我們想要對大型區間真正有效率,我們需要改變方法,並依賴於進階數學和複雜演算法,例如 二次篩選法一般數域篩選法 等。