51nod 1181_質數中的質數_篩素數
阿新 • • 發佈:2017-12-06
分別是 篩法 n) sca 多少 spa div include i++
題目描述
如果一個質數,在質數列表中的編號也是質數,那麽就稱之為質數中的質數。例如:3 5分別是排第2和第3的質數,所以他們是質數中的質數。現在給出一個數N,求>=N的最小的質數中的質數是多少(可以考慮用質數篩法來做)。
#include <stdio.h> #define N 1000005 bool notprime[N]; int prime[N], tot, f[N]; int work() { for (int i = 2; i <= N; i++) { if (!notprime[i]) { prime[++tot] = i; f[i] = tot; } for (int j = 1; j <= tot && i * prime[j] <= N; j++) { notprime[i * prime[j]] = 1; if (i % prime[j] == 0) break; } } return 0; } int main() { int n; scanf("%d", &n); work();for (int i = n; ; i++) { if (!notprime[i] && !notprime[f[i]]) { printf("%d\n", i); break; } } return 0; }
51nod 1181_質數中的質數_篩素數