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

算法笔记。质数筛算法

题目:

给定一个正整数 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

 

 

http://www.xdnf.cn/news/3882.html

相关文章:

  • 一种实波束前视扫描雷达目标二维定位方法——论文阅读
  • 短信登录功能实现(黑马点评)
  • 高中数学联赛模拟试题精选学数学系列第6套几何题
  • QT —— QWidget(1)
  • 白皮解读:数据流通关键技术白皮书【附全文阅读】
  • MNN 支持 DeepSeekVL
  • shell入门
  • 通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】
  • 驱动总裁v2.19(含离线版)驱动工具软件下载及安装教程
  • 实用在线工具箱OmniTools
  • Python硬核革命:从微控制器到FPGA的深度开发指南
  • 多模态大语言模型arxiv论文略读(五十七)
  • Java响应式编程
  • DeepSeek实战--蒸馏
  • Java快速上手之实验六
  • Scrapy框架之【settings.py文件】详解
  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-rtdetr(十一)
  • 强化学习:山地车问题
  • 【信息系统项目管理师】【论文】项目背景-通用部分(可背诵)
  • P1434 [SHOI2002] 滑雪
  • NVMe控制器之完成信息解析模块
  • Rotary Positional Embedding
  • FastAPI系列14:API限流与暴力破解防护
  • 学习黑客资产威胁分析贴
  • Linux:时间同步服务器
  • 深入理解C++中的指针与引用:区别、应用与最佳实践
  • 《Spring Boot实战指南:从零开始构建现代Java应用》
  • 从实列中学习linux shell11 :在 shell 中 对于json的解析 jq 和awk 如何选择,尤其在数据清洗,数据重新组织中的应用
  • 叠层阻抗线框
  • 【信息系统项目管理师-论文真题】2011下半年论文详解(包括解题思路和写作要点)