刷題-力扣-204
阿新 • • 發佈:2020-12-03
204. 計數質數
題目連結
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/count-primes
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
題目描述
統計所有小於非負整數n的質數的數量。
示例 1:
輸入:n = 10
輸出:4
解釋:小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
示例 2:
輸入:n = 0
輸出:0
示例 3:
輸入:n = 1
輸出:0
提示:
0 <= n <= 5 * 106
題目分析
- 求小於n的質數數量。
- 鑑於時間和空間的限制,故排除雙迴圈的情況。
- 使用“埃拉託斯特尼篩法”進行解題
程式碼
class Solution { public: int countPrimes(int n) { int sum = 0; if(n < 1) return sum; int is[n]; for(int i = 2; i < n; i++) { is[i] = 1; } for(int i = 2; i < n; i++) { if(is[i] == 1){ sum++; for(int j = i * 2; j < n; j += i) { is[j] = 0; } } } return sum; } };
用時51min