1. 程式人生 > >51nod 1181_質數中的質數_篩素數

51nod 1181_質數中的質數_篩素數

分別是 篩法 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_質數中的質數_篩素數