筛选法求素数(求第t个素数是多少)
2017-04-05 21:15
204 查看
#include <cstdio> #include <cmath> #define N 10000000 #define T 100002 int a ; int main() { int n,t=100002; for(int i=1; i<=N; i++) a[i]=1; for(int i=2; i<=sqrt(N+1); i++) { for(int j=2*i; j<=N; j+=i) { a[j]=0; } } int ans=0; for(int i=2; i<=N; i++) { if(a[i]==1) { ans++; if(ans==t)//求第t个素数是多少 { printf("%d\n",i); break; } } } return 0; }
这个速度慢,效率低;
下面提供一种更快速的
bool a[20000000]; void prime() { a[2]=1; for (i=3; i<=20000000; i+=2) a[i]=1; for(i=3;i<=sqrt(20000001);i+=2) if (a[i]) for (j=i*i; j<=20000000; j+=(i<<1))//其中i<<1就是i乘以2的1次方,如果是1<<i就是1乘以2的i次方 a[j]=0; }
相关文章推荐
- Php中的素数筛选
- Light OJ 1356 Prime Independence 最大独立集+素数筛选
- Prime Distance(筛选法求素数 )
- 筛选法求素数
- 筛选法求素数
- 2354: Number Pyramid 线性素数筛选变形
- 1928 Prime Distance 素数筛选法 ,筛选一段区间的素数
- 一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间
- 算法之――素数之筛选法
- hdu 2136 (Largest prime factor)就是简单 的筛选素数法
- poj3292 素数筛选
- 筛选法求素数【完整的整理了一下】
- poj -- 2689 Prime Distance(筛选法求素数)
- 筛选法求素数
- 素数筛选
- 用筛选法求100以内的素数
- java筛选法求素数
- ACM-素数筛选
- 三种素数筛选法详解 (转)
- 素数筛选和合数分解