1. 程式人生 > 實用技巧 >刷題-力扣-204

刷題-力扣-204

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

題目分析

  1. 求小於n的質數數量。
  2. 鑑於時間和空間的限制,故排除雙迴圈的情況。
  3. 使用“埃拉託斯特尼篩法”進行解題

程式碼

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