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

埃氏筛详解

埃氏筛是什么

埃氏筛不是一个很难的东西,只是一个素数筛法(素数,也称质数),大家想,用普通的判断方法筛出1~300000的素数要用多长时间?那可不是一个小数目,使用埃氏筛法可以大大的提升晒的效率。

怎么筛

其实很简单,我们从2开始筛(埃氏筛可能也比较耗时,欧拉筛是其进化版),把2的倍数全部标记,如4、6、8、10等,然后到3,2没有标记3,所以的话把三的倍数标记起来(本身不标记),再看4,既然已经被标记过了,那么就直接跳过,以此类推,秘籍->可以使用布尔数组进行标记,比如要标记4,就把数组为4的位置变成1,没被标记的就为0

核心代码

想抄?不给!只列出核心部分。


for(int i=2;i<=n;i++){\\从2开始筛,筛到n也就是规定的终点if(!a[i]){\\a数组用于标记int c=i*2; while(c<=n){a[c]=1;\\标记c+=i;}}
}
\\作者现编的,不知道准不准,反正差不多是这样的

至于输出部分嘛,给个提示,如果筛完后a数组某个下标对应的值为0,那么这个下标就是素数,例如a[7]为0,那么7是素数


http://www.mrgr.cn/news/31310.html

相关文章:

  • .NET Core中的时区转换问题
  • YOLOv9改进系列,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点
  • 【二级C语言考试】自定义数据类型
  • 设计模式之适配器模式
  • 4款音频转文字在线转换工具帮你解锁新的记录模式。
  • Vue-router路由
  • 电脑连接手机热点只能登陆qq和微信 浏览器无法正常上网的原因
  • 时间复杂度和空间复杂度
  • 【C++】STL----list常见用法
  • 小程序与APP的区别
  • C++_21_模板
  • 独立站技能树/工具箱1.0 总纲篇丨出海笔记
  • redis分布式锁(看门枸机制)
  • AI大模型之旅-langchain结合glm4,faiss构建本地知识库
  • 《C++中的资源管理利器:RAII 技术深度剖析》
  • 【busybox记录】【shell指令】stdbuf
  • 东北非国企就职体验
  • 2409js,学习js1
  • Linux 系统进程理解——标识符,状态
  • 将阮一峰老师的《ES6入门教程》的源码拷贝本地运行和发布