埃拉託斯特尼篩法(埃式篩,篩選數字n範圍內的素數)

 

古希臘數學家 埃拉托色尼/埃拉託斯特尼(Eratosthenes)除了在2000多年前就發現地球不是平的之外,還發明瞭本文中討論的埃式篩(一種通過篩除一個素數所有的倍數,從而識別素數方法)。

 

什麼是素數

素數一般指質數。質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。

(自然數:全體非負整數組成的集合)

算法思想

要得到自然數n以內的全部素數,必須把小於或等於的所有素數的倍數剔除,剩下的就是素數。

 

埃式篩代碼(篩選特定範圍內的素數)

function filter(N) {
    const isPrime = new Array(N).fill(true);
    for (let i = 2; i < N; i++) {
        if (isPrime[i] === false) {
            continue;
        }
        for (let j = i * 2; j < N; j += i) {
            isPrime[j] = false;
        }
    }
    const primes = [];
    for (let i = 2; i < N; i++) {
        if (isPrime[i] === true) {
            primes.push(i); 
        }
    }
    return primes;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章