素数筛法打表
2016-05-31 20:24
375 查看
筛法打素数表是一种高效的打表方法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。就这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。需要注意的是,选取质数的时候,循环只需到sqrt(n)就可以。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; #define maxn 10000 int a[maxn],isprime[maxn]; int n; void primetable() { int i,j; memset(isprime,1,sizeof(isprime)); isprime[0]=isprime[1]=0; int max=sqrt(maxn*1.0); for(i=2; i<=max; i++) { if(isprime[i]) { for(j=2; j*i<=maxn; j++) isprime[i*j]=0; } } n=0; for(i=1; i<maxn; i++) if(isprime[i]) a[n++]=i; } int main() { primetable(); for(int i=0; i<n; i++) printf("%4d ",a[i]); }
相关文章推荐
- C#查找素数实现方法
- java使用筛选法求n以内的素数示例(java求素数)
- java求100以内的素数示例分享
- 判断一个数是不是素数的方法
- C++回文数及素数问题计算方法
- c#求范围内素数的示例分享(c#求素数)
- GO语言求100以内的素数
- Java列出2到100之间所有素数的方法
- Python素数检测实例分析
- Python实现高效求解素数代码实例
- 使用Python判断质数(素数)的简单方法讲解
- Python素数检测的方法
- Python实现求最大公约数及判断素数的方法
- Go语言生成素数的方法
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- python学习--埃拉托斯特尼筛法求素数
- ACM程序设计大赛题目分类
- 计算字符串最后一个单词长度