博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eratosthenes筛选法(C++版)
阅读量:6243 次
发布时间:2019-06-22

本文共 950 字,大约阅读时间需要 3 分钟。

Sieve of Eratosthenes

使用埃拉托斯特尼筛选法计算小于100000的素数。

埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数。

该方法的唯一缺点是使用的存储空间大,可以进一步改进。

另外,该算法也不适用于计算某个范围内的全部素数。

C++版使用的标志是布尔标志,比起C语言版(用整数数组作为标识太浪费空间;用位运算逻辑太复杂,易出错),使用的空间上改进相当多,并且逻辑也十分简单。

这是一个基础程序,用到的时候可以拷贝修改加以利用。

程序如下:

/* * 筛选法计算小于100000的素数 * 筛选法求最小的素数序列,原本是不朽的数学家们手工计算的方法, */#include 
#include
using namespace std;const int MAXN = 100000;bool sieveflag[MAXN+1] = {false, false, true};void esieve(bool sflag[], int n){ // 初始化 for(int i=3; i<=n; i++) { sflag[i++] = true; sflag[i] = false; } // 筛选 int max = sqrt(n); for(int i=3; i<=max; i++){ if(sflag[i]) { for(int j=i+i; j <= n; j+=i) sflag[j] = false; } }}int main(){ esieve(sieveflag, MAXN); for(int i=2, num=0; i<=MAXN; i++){ if(sieveflag[i]){ ++num; cout << num << ":" << i <

转载于:https://www.cnblogs.com/tigerisland/p/7564867.html

你可能感兴趣的文章
sqlserver重命名字段名称
查看>>
学习面试题Day07
查看>>
HttpServletRequest/HttpServletResponse乱码问题解决
查看>>
yum源配置
查看>>
Python操作redis
查看>>
spring+springmvc+mybatis+maven整合
查看>>
(原)ubuntu中安装tensorflow
查看>>
如何设置双网卡路由
查看>>
组策略导入导出secedit
查看>>
Windows Phone 7.5 - Local SQL Database(简介)
查看>>
微软宣布Entity Framework 5的性能有了显著提升
查看>>
SPSS中八类常用非参数检验之二:二项分布(Binomial)检验
查看>>
mysql字段类型范围说明:int、bigint、smallint、tinyint,char、varchar、nvarchar
查看>>
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
查看>>
C# Socket编程(5)使用TCP Socket
查看>>
SQL SERVER IN参数化处理
查看>>
Python MongoDB Spatial Query
查看>>
NetBeans IDE 7.4 Beta版本build JavaFX时生成的可执行jar包执行时找不到依赖的jar包
查看>>
笔记本wifi热点设置好后,手机连上但不能上网问题
查看>>
Run ASP.NET MVC site on mac (mono/xamarin studio)
查看>>