一.思路

此筛选法用于计算n以下的质数

1.初始化一个2~n的连续整数数列;

2.从2开始循环遍历(如果为0则跳过)假设为x;

3.x与后面的数y进行循环遍历取模(如果为0则跳过);

4.如果取模为0就将y设置为0;(此环节设置为0也是为了2和3环节的跳过,以节省时间和空间)

其中有个问题,就是要循环到几次就可以将质数筛选出来呢,我进行试验发现(x-1)x ,包括(x-1)之前被消除过了。因为x是循环++而来,所以x*x就是判断结束的依据,x*x 要小于等于n;

二.实现

#include <iostream>
using namespace std;#include <vector>  //读取vector头文件int main(int argc, const char * argv[]) {//读入数组int n;cout << "请输入你要求的数" << endl;cin >>n;//设置一个向量数组vector<int>a;//初始化数组并显示for(int i = 2; i <= n; i++){//在容器尾巴加入a.push_back(i);cout << i << "\t";}//换行cout << endl;//筛选出质数for(int i = 2; i*i <= n; i++){//被消除过的跳过if(a[i-2]==0) {continue;}//与后面的数取模比较for(int j = i+1;j <= n; j++){//被消除过的跳过if(a[i-2]==0) {continue;}//进行比较if(j % i == 0){//将消除的做个标记设置为0a[j-2] = 0;}}}//循环打印for(int c : a){cout << c << "\t";}cout << endl;return 0;
}

这样我们的质数就被提取出来了;设为0的都是被消除的。

这个算法涉及STL,如果读者未学到可以使用new、自定义函数判断、使用有序线性结构即可。

算法笔记 之 埃拉托色尼筛选法(筛选质数)相关推荐

  1. 信息学奥赛一本通 2040:【例5.7】筛选法找质数 (普通筛 线性筛)

    [题目链接] ybt 2040:[例5.7]筛选法找质数 [题目考点] 1. 普通筛法找质数(埃拉托色尼筛法) 基本思想:把从2到N的一组正整数从小到大按顺序排列.从中依次删除2的倍数.3的倍数.5的 ...

  2. 筛选法求质数(Java实现)

    筛选法求质数:输入一个整数 n,求小于这个整数的所有质数. 算法:定义一个长度为 n 的 boolean 数组,true 表示是质数,false 表示不是质数.初始均为 true. 之后从 2 开始循 ...

  3. 信息学奥赛一本通(2040:【例5.7】筛选法找质数)

    2040:[例5.7]筛选法找质数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 490     通过数: 335 [题目描述] 用筛法求出n(2≤n≤1000) ...

  4. 埃拉托色尼筛选法------筛选质数

    前戏:本篇介绍一种特定数据范围内统计该段数据内所有质数的高效算法,埃拉托色尼筛选法. 正文: 1.埃拉托色尼筛选法: 埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法 ...

  5. java筛选法求质数_用筛选法找出N内所有素数(质数)

    //筛选法实现 // main.c #include #define ArraySize 100 int main(int argc, const char * argv[]) { int i ; i ...

  6. MATLAB采用筛选法求质数,C/C++利用筛选法算素数的方法示例

    什么是求素数 素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快. i在2到n-1之间任 ...

  7. c语言筛选法_「干货」C语言经典算法筛选法求质数,极少数人用过的素数求解法...

    小编是一个有着6年工作经验的工程师,关于C++编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的群10048,-83029收取,免费送给大家,希望你也能凭着自己的努力, ...

  8. c语言筛选法_极少数人用过的另类素数求解法,C语言经典算法之筛选法求质数...

    筛选求质数 明除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家努力的课题,在这边介绍一个着名的 Eratosthenes求质数方法. 行 ...

  9. Day5:计数质数(埃拉托色尼筛选法)

    leetcode地址:https://leetcode-cn.com/problems/count-primes/ Day5:计数质数 一. 问题背景: 统计所有小于非负整数 n 的质数的数量. 二. ...

最新文章

  1. 如何成为一名软件架构师?
  2. Ironport对邮件主题中包括特殊字符的过滤
  3. 查WiFi密码的三种方法
  4. C#使用Cookie方法
  5. Pytorch数据读取(Dataset, DataLoader, DataLoaderIter)
  6. echarts 引用地图的json
  7. 抖音昵称html,抖音名字600个
  8. 提升网页加载速度—预加载VS预读取
  9. 一:MySQL数据库的性能的影响分析及其优化
  10. 交友盲盒小程序版本 全开源版本
  11. 年仅 28 岁就宣布从字节跳动退休?
  12. 360p2刷无线打印服务器,360P2路由器怎么修改无线信道?-360安全路由P2的WiFi信道修改教程?...
  13. API to UPDATE Oracle FND User
  14. 【解决】Failure to find com.xxx:xxx-target:pom:1.0-SNAPSHOT in https://xxxx/snapshot was cached in the
  15. Mixly----利用超声波传感器控制LED灯
  16. 从一个叫灵异拼图(the forgotten) 影片看东西方文化的差异
  17. 计算机毕业设计springboot+vue基本微信小程序的校园二手物品交易平台系统
  18. 吴磊《星汉灿烂》新角色贯穿主线 演技惊喜引期待
  19. 纠结建模的话,手绘3D建模提高你的模型制作能力和美术绘制能力
  20. 生成树协议(STP)

热门文章

  1. [Python从零到壹] 五十四.图像增强及运算篇之局部直方图均衡化和自动色彩均衡化处理
  2. matlab 分段符号函数,Octave符号包中的分段函数?
  3. 境内股指期货品种、合约类型和周期规律简介
  4. xamarin学习笔记A19(安卓AIDL)
  5. MATLAB绘图(一)
  6. Windows中使用Java执行shell命令运行检测,通过sonarqube的webapi获取扫描结果
  7. Excel中序号自动填充
  8. ionic自定义图标
  9. win7(主机)+win7虚拟机(vmware,被调试机)+windbg配置内核驱动调试
  10. MySQL攻略(1)