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

质数筛-欧拉筛

对于正常的程序要求,埃氏筛的速度已经是相当不错了,但是在某些极端条件下,埃氏筛的速度可能还不够,这个时候我们就要用到欧拉筛了

思路

埃氏筛存在一个非常严重的缺陷,那就是它会对一个数据进行反复筛选,比如:

6 = 2 * 3

6 = 3 * 2

可以发现,对于 6 这个非质数,我们进行了两次筛选,而对于后面跟大的数来说,可能被筛的次数会更多,这个时候就会对我们筛法的效率产生影响。而欧拉筛法可以避免无效的筛选。

我们发现,对于每个非质数,都会存在唯一的最小质因子

于是我们便可以让每个和数只在它最小质因子与对应因数相乘时才被标记为合数,这样我们就只筛了一次。例如:

6 = 2 * 3 //标记 6

6 = 3 * 2 //已经标记过,便不再标记

核心思想:从第一个质数开始,一个个排除,不做无效的筛选。

人话:从前向后走,边走边乘,乘出来的数就是合数

代码实现

#include<iostream> #include<cstring> using namespace std; const int N = 1e5; int primes[N]; //存储质数 int flag[N]; //标记是质数还是合数,如果是质数为 0 ,开始假设全是质数 int main(){ int n; cin >> n; int pos = 0; for(int i = 2 ; i <= n ; i++){ if(flag[i] == 0){ //如果是质数 primes[pos++] = i; //存储质数 for(int j = 0 ; j < pos && i * primes[j] <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 } }else{ //如果是合数 for(int j = 0 ; j < pos && primes[j] * i <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 if(i % primes[j] == 0) break; //如果可以整除说明发现了最小质因子,退出循环 } } } for(int i = 0 ; i < pos ; i++){ cout << primes[i] << ' '; } cout << endl; return 0; }
http://www.jsqmd.com/news/117283/

相关文章:

  • Linly-Talker能否用于博物馆文物解说机器人?
  • Linly-Talker支持OAuth2.0鉴权机制吗?
  • Linly-Talker能否用于法院普法宣传教育?
  • Linly-Talker支持断点续传视频上传功能吗?
  • 2025年下半年四川成都食用油工厂专业选择指南 - 2025年品牌推荐榜
  • 没有/不用pom.xml文件下将jar包安装到本地maven仓库命令
  • gpt-oss-120b开源模型4bit量化版发布:大模型高效部署新纪元
  • 2025年12月江苏徐州民族舞舞蹈学校深度测评与推荐报告 - 2025年品牌推荐榜
  • Linly-Talker能否用于高校英语口语陪练机器人?
  • 河北石家庄/山东济南/天津商业文旅街区氛围设计公司【力荐】
  • 小笔记
  • Python系列Bug修复PyCharm控制台pip install报错:如何解决 pip install 网络报错 企业网关拦截 User-Agent 问题
  • 手术导航轨迹偏移 补生物力学约束才校准PINN模型
  • 脊为枢纽,小腿调全身,道医传人李章武外治研究获国家奖
  • Linly-Talker如何防止模型过拟合导致的僵硬表情?
  • Linly-Talker能否生成财经类节目分析师形象?
  • Linly-Talker在消防应急演练中的语音指挥应用
  • Linly-Talker支持音频降噪预处理吗?提升ASR效果
  • [Java]PTA:jmu-Java-06异常-ArrayIntegerStack异常改进版
  • Linly-Talker能否生成航天工程师形象讲解火箭发射?
  • 53、FTDI设备使用与驱动配置全解析
  • 2025年12月新沂PC砖生产商哪家强? - 2025年品牌推荐榜
  • 54、第三方FTDI应用模块与自定义流驱动开发
  • 13、Windows Socket编程:从基础到应用的深度解析
  • python django flask餐饮连锁店点餐食材采购管理系统的设计与实现_971i3t7j--论文
  • python django flask高校创新创业课程体系选择系统的设计与实现_学习资源推荐选课系统196muhq--论文
  • 55、嵌入式系统开发:FTDI设备与托管代码集成
  • Linly-Talker能否接入铁路12306客服系统?
  • 14、Windows NT管道编程全解析
  • Linly-Talker支持灰度发布新功能吗?企业运维友好