輸出質數
重要性:3
一個大於 1
的整數如果無法被 1
和它本身以外的任何數字整除,則稱為 質數。
換句話說,n > 1
如果無法被 1
和 n
以外的任何數字整除,則為質數。
例如,5
是質數,因為它無法被 2
、3
和 4
整除。
撰寫一個輸出從 2
到 n
區間內質數的程式碼。
對於 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
}
有很多空間可以最佳化。例如,我們可以從 2
到 i
的平方根尋找除數。但無論如何,如果我們想要對大型區間真正有效率,我們需要改變方法,並依賴於進階數學和複雜演算法,例如 二次篩選法、一般數域篩選法 等。