Eratosthenes筛选法(C++版)
来源:互联网 发布:网络拓扑结构有几种 编辑:程序博客网 时间:2024/05/21 11:01
Sieve of Eratosthenes
使用埃拉托斯特尼筛选法计算小于100000的素数。
埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数。
该方法的唯一缺点是使用的存储空间大,可以进一步改进。
另外,该算法也不适用于计算某个范围内的全部素数。
C++版使用的标志是布尔标志,比起C语言版(用整数数组作为标识太浪费空间;用位运算逻辑太复杂,易出错),使用的空间上改进相当多,并且逻辑也十分简单。
这是一个基础程序,用到的时候可以拷贝修改加以利用。
程序如下:
/* * 筛选法计算小于100000的素数 * 筛选法求最小的素数序列,原本是不朽的数学家们手工计算的方法, */#include <iostream>#include <cmath>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 <<endl; } } return 0;}
1 0
- Eratosthenes筛选法(C语言版)
- Eratosthenes筛选法(C++版)
- Eratosthenes筛选法
- Eratosthenes筛选法
- Eratosthenes筛选法
- Eratosthenes 筛选法 c语言 数组+指针实现
- Eratosthenes筛选法计算质数
- Sieve of Eratosthenes(埃拉托斯特尼素数筛选法)--java实现
- 使用埃拉托色尼筛选法(Eratosthenes)得到素数
- 素数筛选法-Eratosthenes筛法优化
- Eratosthenes筛选法求素数的算法
- Eratosthenes筛选法求素数的算法
- 每日一小练——Eratosthenes 筛选法
- 找素数的Eratosthenes算法(筛选法)
- Eratosthenes筛选法与欧拉筛选法
- Eratosthenes筛选法与欧拉筛选法(整理)
- 了解BitSet类并实现素数筛选--Eratosthenes筛选法
- 找质数算法之埃拉托色尼筛选法(Sieve of Eratosthenes算法)
- STL map使用时应注意的一个问题
- 查询两个日期之间的月份
- mysql笔记
- 92. Reverse Linked List II
- Quartz2d (画线 矩形 圆 三角形 弧线 扇形 进度圈等)
- Eratosthenes筛选法(C++版)
- windows下使用批处理脚本实现多个版本的JDK切换
- 微信开发全局返回码说明
- linux编译mysql关于mysql.sock的错误
- iOS开发技巧(使用Xcode DEBUG模式和RELEASE模式)
- UVA 1335 Beijing Guards
- JavaScript -- 音频视频的播放
- 经验:人工智能威力初显,想养一只阿尔法狗帮我画图
- HTML5之音频与视频