10.17算法

计数质数
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。

 

示例 1:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
示例 2:

输入:n = 0
输出:0
示例 3:

输入:n = 1
输出:0
 

提示:

0 <= n <= 5 * 106

class Solution {
public:
    int countPrimes(int n) {
    if(n==0){
        return 0;
    }
    vector<bool> not_prime(n,false);
    int res = 0;
    for(int i=2;i<n;i++){
        if(not_prime[i]){
            continue;
        }
        res++;
        for(int j=i;j<n;j+=i){
            not_prime[j] = true;
        }
    }
    return res;
    }
};
 
关键:需要注意prime的计算+=i,在i的基础上叠加去筛选,最开始全部为false,从2开始将2的倍数全部变为true,从3开始从3的倍数变为true,这样4、6都被筛去了,只有5、7、11可以继续
posted @ 2023-10-17 10:46  卧龙丹心  阅读(19)  评论(0)    收藏  举报