用筛选法求1—100之内的素数(此法难度的话,方法可以不界定:能完成求1—100之内的素数即可)。
 
在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
 
具体做法如下:
  先将1挖掉(因为1不是素数,可将该数置为0)。
  用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
  用3去除它后面的各数,把3的倍数挖掉。
  分别用4、5各数作为除数去除这些数以后的各数。
  这个过程一直进行到在除数后面的数已全被挖掉为止。
  例如找1~50的素数,要一直进行到除数为49为止(事实上,可以简化,如果需要找1~n范围内素数表,只需进行到除数为n^2(根号n),取其整数即可。例如对1~50,只需进行到将50^2作为除数即可。)
  如上算法可表示为:挖去1;  a[1]=0用刚才被挖去的数的下一个数p去除p后面各数,把p的倍数挖掉;
  for(i=2;i<=sqrt(100);i++){  
    for(j=i+1;j<=100;j++)
              if(a[j]%a[i]==0)
                 a[j]=0;
        }
检查p是否小于n^2的整数部分(如果n=1000,则检查p),如果是,则返回(2)继续执行,否则就结束;<4>纸上剩下的数就是素数。
#include<stdio.h>
#include<math.h>
int main()
{
//cout<<"100以内的全部素数:"<<endl;
printf("100以内的全部素数: \n"); int i,j,k;
int a[];
for(i=;i<=;i++) a[i]=i;
a[]=; //先挖掉a[1] for(i=;i<sqrt();i++){
for(j=i+;j<=;j++){
if(a[i]!=&&a[j]!=){
if(a[j]%a[i]==){
a[j]=; //把非素数挖掉,不是素数的都赋值为0
}
}
}
}
printf("\n");
for(i=,k=;i<=;i++){
if(a[i]!=){ //选出值不为0的数 即素数
//cout<<" "<<a[i];
printf("%d ",a[i]);
k++;
} if(k==){ //输出10个数后换行
printf("\n");
k=;
}
}
printf("\n"); return ;
}
 

埃拉托色尼(Eratosthenes)筛法的更多相关文章

  1. POJ 2262 Goldbach's Conjecture(Eratosthenes筛法)

    http://poj.org/problem?id=2262 题意: 哥德巴赫猜想,把一个数用两个奇素数表示出来. 思路:先用Eratosthenes筛法打个素数表,之后枚举即可. #include& ...

  2. 数论初步——Eratosthenes筛法

    具体内容见紫书p312-p313 一.用Eratosthenes筛法构造1~n的素数表 思想:对于不超过n的每个非负整数p,删除2p,3p,4p…,当处理完所有的数后,还没有被删除的就是素数. 代码: ...

  3. 素数筛法(Eratosthenes筛法)

    介绍 Eratosthenes筛法,又名埃氏筛法,对于求1~n区间内的素数,时间复杂度为n log n,对于10^6^ 以内的数比较合适,再超出此范围的就不建议用该方法了. 筛法的思想特别简单: 对于 ...

  4. C语言程序设计100例之(12):Eratosthenes筛法求质数

    例12   Eratosthenes筛法求质数 问题描述 Eratosthenes筛法的基本思想是:把某范围内的自然数从小到大依次排列好.宣布1不是质数,把它去掉:然后从余下的数中取出最小的数,宣布它 ...

  5. 素数筛 : Eratosthenes 筛法, 线性筛法

    这是两种简单的素数筛法, 好不容易理解了以后写篇博客加深下记忆 首先, 这两种算法用于解决的问题是 : 求小于n的所有素数 ( 个数 ) 比如 这道题 在不了解这两个素数筛算法的同学, 可能会这么写一 ...

  6. 用C++实现的增强Eratosthenes筛法程序

    运行示例 PS H:\Read\num\x64\Release> .\eSievePro Eratosthenes sieve: a method to find out all primes ...

  7. 用C++实现的Eratosthenes筛法程序

    运行示例 只输出素数总数的运行示例 PS H:\Read\num\x64\Release> .\esieve.exe Eratosthenes sieve: a method to find o ...

  8. 由Eratosthenes筛法演变出的一种素数新筛法

    这两天和walls老师交流讨论了一个中学竞赛题,我把原题稍作增强和变形,得到如下一个题: 从105到204这100个数中至少要选取多少个数才能保证选出的数中必有两个不是互素的? 我们知道最小的几个素数 ...

  9. HDU 1216 Assistance Required 埃拉托色尼色筛法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1216 思路:色筛法 代码(1): #include<iostream>//-------- ...

随机推荐

  1. gdb 常用选项

    gdb 常用选项 help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r st ...

  2. Docker 网络详解及 pipework 源码解读与实践

    转载自:https://www.infoq.cn/article/docker-network-and-pipework-open-source-explanation-practice/ Docke ...

  3. UVA - 11400 Lighting System Design(照明系统设计)(dp)

    题意:共有n种(n<=1000)种灯泡,每种灯泡用4个数值表示.电压V(V<=132000),电源费用K(K<=1000),每个灯泡的费用C(C<=10)和所需灯泡的数量L(1 ...

  4. 996.ICU 爆发,互联网从业者难逃“高薪陷阱”

    从 3 月 27 日开始,截止本文发稿,GitHub 上面的项目 996.ICU 的 Star 数量已经超过 18 万,这场由程序员发动的轰轰烈烈的公开反对 996 工作制的运动,早已突破互联网圈层而 ...

  5. mybatis的插入数据后的主键获取

    为什么要在插入数据后获取主键:当有一个订单表和订单详情表,当插入订单表的数据后,需要在订单详情表插入该订单的具体购物情况,订单详情表需要的一个列是订单表的主键或者订单ID.(通俗讲:A表的主键是B表的 ...

  6. 第21章—websocket

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  7. 尝试解决 : Microsoft Visual C++ 14.0 is required 的问题

    当在pycharm  中安装  gevent 的时候 发生了  错误   晚上搜索的时候发现  解决问题有两种 方法 1  是   下载  whl  文件  通过二进制的方式 导入模块的包   想了想 ...

  8. 【JavaScript】回流(reflow)与重绘(repaint)

    重绘与回流 首先要了解页面是如何呈现的: HTML文档加载后生成DOM树(包括display:none;元素): 在DOM树的基础上配合css样式结构体生成render树(不包含display:non ...

  9. oracle 向表中插入BLOB类型数据

    提示: 待插入图片必须保存到oracle主机路径上. 步骤: 1.SYSDBA权限用户创建图片所在目录 CREATE OR REPLACE DIRECTORY TEST_DIR AS 'C:\Pict ...

  10. 吴裕雄--天生自然MySQL学习笔记:MySQL 数据类型

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这 ...