51nod 1181 质数中的质数(质数筛法)
2016-09-16 20:26
162 查看
51nod 1181 质数中的质数(质数筛法)
非线性
这种方法会造成重复筛除合数,影响效率。
快速线性筛法
利用了每个合数必有一个最小素因子。每个合数仅被它的最小素因子筛去正好一次。所以为线性时间。
非线性
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <map> using namespace std; #define LL long long #define INF 0x3f3f3f3f #define PI acos(-1.0) #define E 2.71828 #define MOD 100000000 #define N 1001000 int prime ; void is_prime() { memset(prime,0,sizeof(prime)); for(int i = 2; i <= N/2; i++) { if(prime[i] == 0) { for(int j = i+i; j < N; j += i) prime[j] = 1; } } } int main() { int n; is_prime(); scanf("%d",&n); int cnt = 0; for(int i = 2; ; i++) { if(prime[i] == 0) { cnt++; if(i >= n && prime[cnt] == 0) { printf("%d\n",i); break; } } } return 0; }
这种方法会造成重复筛除合数,影响效率。
快速线性筛法
利用了每个合数必有一个最小素因子。每个合数仅被它的最小素因子筛去正好一次。所以为线性时间。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <map> using namespace std; #define LL long long #define INF 0x3f3f3f3f #define PI acos(-1.0) #define E 2.71828 #define MOD 100000000 #define N 1001000 int id ; int prime ; void is_prime() { int k = 0; memset(prime,0,sizeof(prime)); for(int i = 2; i < N; i++) { if(prime[i] == 0) id[k++] = i; for(int j = 0; j < k && id[j] * i < N; j++) { prime[i * id[j]] = 1; if(i % id[j] == 0) break; } } } int main() { int n; is_prime(); scanf("%d",&n); int cnt = 0; for(int i = 2; ; i++) { if(prime[i] == 0) { cnt++; if(i >= n && prime[cnt] == 0) { printf("%d\n",i); break; } } } return 0; }
相关文章推荐
- 51nod 1181 质数中的质数(质数筛法)
- 51nod 1181 质数中的质数(质数筛法)
- D - 质数中的质数(质数筛法) 51Nod - 1181
- 51Nod-1181-质数中的质数(质数筛法)
- 51nod 1181 . 质数中的质数(质数筛法)
- 51NOD 1181质数中的质数(质数筛法)
- D - 质数中的质数(质数筛法) 51Nod - 1181
- 51Nod 1181 质数中的质数(质数筛法)
- 51nod-1181【质数筛法】质数中的质数
- 51nod 1181 质数中的质数(质数筛法)
- 51Nod 1181: 质数中的质数(质数筛法)
- 51nod_1181 质数中的质数(质数筛法)
- 51nod-【1181 质数中的质数(质数筛法)】
- 51NOD 1181 质数中的质数(质数筛法)
- 51nod:1181 质数中的质数(质数筛法)
- 【51Nod】1181 质数中的质数(质数筛法)
- 51NOD 1181 质数中的质数(质数筛法)
- 51nod 1181 质数中的质数(质数筛法)
- 51nod 1181 质数中的质数(质数筛法)
- 51nod 1181 质数中的质数(质数筛法)【思维素数】