当前位置: 首页 > news >正文

算法笔记。质数筛算法

题目:

给定一个正整数 n,请你求出 1∼n 中质数的个数。

输入格式

共一行,包含整数 n。

输出格式

共一行,包含一个整数,表示 1∼n 中质数的个数。

数据范围

1≤n≤106

输入样例:
8
输出样例:
4

埃式筛:

思路:

将所有质数的倍数筛除

代码实现:

#include <iostream>
#include <vector>
using namespace std;
const int N = 1000100;int n;
bool st[N];
vector<int> v;int main()
{cin>>n;for(int i = 2;i<=n;i++){if(!st[i])//如果没有被筛除,就是质数{v.push_back(i);//添加质数for(int j = i;j<=n;j+=i) st[j] = true;//筛除所有质数的倍数}}cout <<v.size();return 0;
}

参考:

入门算法课(4)-质数和筛法 | 质数 | 埃氏筛 | 线性筛 | 二次筛法 | 编程 | 算法竞赛 | 数学_哔哩哔哩_bilibili

线性筛:

代码实现:

#include <iostream>
#include <vector>
using namespace std;
const int N = 1000100;int n;
bool st[N];
vector<int> v;int main()
{cin>>n;for(int i = 2;i<=n;i++){if(!st[i]) v.push_back(i);//加入质数for(int j = 0;v[j]<=n/i;j++) {st[v[j]*i] = true;//筛除非质数if(i%v[j] ==0) break;//最多筛除到v中最后一个质数的平方}}cout <<v.size();return 0;
}

 思路:

参考:入门算法课(4)-质数和筛法 | 质数 | 埃氏筛 | 线性筛 | 二次筛法 | 编程 | 算法竞赛 | 数学_哔哩哔哩_bilibili

 

 

相关文章:

  • 琴生不等式 (Jensen‘s Inequality)
  • 【quantity】7 角度单位模块(angle.rs)
  • 论系统安全架构设计及其应用
  • Vibe Coding 新时代:AI 辅助编程完全指南
  • 从融智学视域快速回顾世界历史和主要语言文字最初历史证据(列表对照分析比较)
  • JavaScript中的AES加密与解密:原理、代码与实战
  • 一篇文章看懂web服务
  • C与指针4——指针
  • 04 基于 STM32 的时钟展示程序
  • js单调栈解题模板
  • [UVM]UVM中reg_map的作用及多个rem_map的使用案例
  • QNAP Duplicati 备份 123云盘
  • Learning vtkjs之Cutter
  • Spring AI 实战:第一章、Spring AI入门之DeepSeek调用
  • 深入解析高并发场景下分布式缓存优化实战:从原理到性能提升
  • MIT6.S081-lab8
  • 创建第一个简单cesium程序
  • Vscode+git笔记
  • 什么是 Redis?
  • PCIe | TLP | 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型
  • 10家A股农商行一季报:净利均实现增长,常熟银行营收、净利增速领跑
  • 成为中国骑手“孵化器”,环球马术冠军赛是最好的历练舞台
  • 下达专项资金、党政主官田间调研……全国多地力保夏粮稳收
  • 长三角铁路今日预计发送390万人次,昨日客发量同比增长10.5%
  • 因雷雨、沙尘等天气,这些机场航班运行可能受影响
  • 产假工资是谁出?女职工生育能领多少生育津贴?解答来了