算法-计数质数

题目:

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

思路:

使用埃式筛法

当n大于等于2时,如果当前遍历的数 i 是质数,那么从 i*i 开始,直到 n 为止,把 i 的倍数都标记为合数

代码:

cpp 复制代码
class Solution {
public:
    int countPrimes(int n) {
        if(n <= 2) return 0;
        vector<bool> isPrime(n + 1, true);
        for(int i = 2; i < n; i++){
            if(isPrime[i]){
                for(int j = i; j <= n / i; j++){
                    isPrime[i * j] = false;
                }
            }
        }

        int res = 0;
        for(int i = 2; i < n; i++){
            if(isPrime[i]) res++;
        }

        return res;
    }
};
相关推荐
longlongzihan7 小时前
LeetCode 56合并区间:排序与贪心
c++·算法·leetcode
w_zero_one7 小时前
链表(2)
java·数据结构·链表
学术小李8 小时前
cudaMalloc第一个参数为何是指针的指针
算法
kukubuzai8 小时前
二分查找系列一
数据结构·算法·leetcode
老歌老听老掉牙8 小时前
动态规划:从递归到最优决策的算法艺术
算法·动态规划
朔北之忘 Clancy8 小时前
2024 CSP-J 第二轮真题解析
c++·算法·青少年编程·noip·csp·信奥赛·noi
小七在进步8 小时前
类和对象(五)
java·开发语言·算法
wzdark8 小时前
算法与数据结构教学的可视化新模式探索4
数据结构
就叫年华吧丶8 小时前
长文档点目录定位总是不准?一个 content-visibility + 平滑滚动引发的连环坑(Vue3 实战)
前端·javascript·算法·vue