算法-计数质数

题目:

给定整数 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;
    }
};
相关推荐
Hello娃的5 分钟前
【半导体】肖特基接触AND欧姆接触
人工智能·算法
橘颂TA5 分钟前
【剑斩OFFER】算法的暴力美学——交易逆序对的总数
数据结构·算法·leetcode
xiyuping249 分钟前
强化学习之——moutaincar
算法·机器学习
小画家~11 分钟前
第三十七:类型断言
开发语言·c++·算法·golang
九年义务漏网鲨鱼14 分钟前
【大模型微调】QLoRA微调原理及实战
深度学习·算法·大模型·智能体
2401_8414956414 分钟前
【LeetCode刷题】合并区间
数据结构·python·算法·leetcode·合并·遍历·排序
xu_yule24 分钟前
数据结构(14)二叉树的模拟实现和便利代码
数据结构·算法
代码游侠35 分钟前
应用——文件I/O操作代码
linux·运维·c语言·笔记·学习·算法
发疯幼稚鬼40 分钟前
d-堆,左式堆及斜堆的简单介绍
算法
不会代码的小猴41 分钟前
C++的第十三天笔记
c++·笔记·算法