leetcode(9)計數質數的js實現
阿新 • • 發佈:2019-01-08
一.題目描述:
統計所有小於非負整數 n 的質數的數量。
示例:
輸入: 10
輸出: 4
解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
二.js程式碼實現:
1.實現思路:
(1)如果直接判斷從2到該數的方法,執行時間會超時,可以用埃拉託斯特尼篩法對質數進行篩選
(2)埃拉託斯特尼篩法,要得到自然數n以內的全部素數,必須把不大於根號n的所有素數的倍數剔除,剩下的就是素數
(3)要得到自然數n以內的全部素數,必須把不大於 的所有素數的倍數剔除,剩下的就是素數。
給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉;再用下一個質數,也就是3篩,把3留下,把3的倍數剔除掉;接下去用下一個質數5篩,把5留下,把5的倍數剔除掉;不斷重複下去
2.js程式碼實現:
/** * @param {number} n * @return {number} */ var countPrimes = function(n) { if(n < 2) return 0; let count = 0; for(let i = 2; i < n; i++) { if (i <= 3 && i > 1) { count++; continue; } if (i % 2 == 0 || i % 3 == 0) { continue; } let value = 0; for (let j = 5; j * j <= i; j += 6) { if (i % j == 0 || i % (j + 2) == 0) { value = 2; break; } } if(!value) count++; } return count; };