【leetcode】204. 计数质数

简介: 【leetcode】204. 计数质数

题目链接

使用质数筛求解

class Solution {
public:
int prime[5000001];
int a[5000001] = {1,1};
int k = 0;
    int countPrimes(int n) {
        for(int i = 2;i < n; i++){
            if(a[i]==0){
                prime[++k] = i;//存质数
            }
            for(int j = 1;j <= k&&i*prime[j]<5000001; j++){
                if(i*prime[j]>5000001)break;
                a[i*prime[j]] = 1;//这个循环筛掉了当前数字的1到k倍
                if(i%prime[j]==0)break;//已经筛过的就直接跳过
            }
        }
        return k;//这里直接return个数
    }
};

线性筛

筛子的本质就是从2开始将当前数字的所有倍数全部筛掉,然后创造一个只有质数的世界

比如2开始筛,4,6,8,10~~~全被筛掉

3开始,6,9,12~~~全部筛掉

这样一个一个出发,到后面就只剩质数了

相关文章
【Leetcode -696.计数二进制字串 -697.数组的度】
【Leetcode -696.计数二进制字串 -697.数组的度】
31 0
【Leetcode -748.最短补全词 -762.二进制表示中质数个计算置位】
【Leetcode -748.最短补全词 -762.二进制表示中质数个计算置位】
48 0
【Leetcode -292.Nim游戏 -326. 3的幂 -338.比特位计数】
【Leetcode -292.Nim游戏 -326. 3的幂 -338.比特位计数】
35 0
|
5月前
|
JavaScript
【leetcode】204--计数质数-暴力-&-埃拉托斯特尼法
【leetcode】204--计数质数-暴力-&-埃拉托斯特尼法
25 0
|
5月前
|
JavaScript
【leetcode】204. 计数质数 暴力 & 埃拉托斯特尼法
【leetcode】204. 计数质数 暴力 & 埃拉托斯特尼法
37 0
|
5月前
LeetCode题 338比特位计数,20有效的括号,415字符串相加
LeetCode题 338比特位计数,20有效的括号,415字符串相加
62 0
|
5月前
|
机器学习/深度学习 算法 vr&ar
☆打卡算法☆LeetCode 204. 计数质数 算法解析
☆打卡算法☆LeetCode 204. 计数质数 算法解析
|
5月前
leetcode-338:比特位计数
leetcode-338:比特位计数
33 0
|
28天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行