1181 质数中的质数(质数筛法)

Posted upupdayday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1181 质数中的质数(质数筛法)相关的知识,希望对你有一定的参考价值。

1181 质数中的质数(质数筛法)

基准时间限制:1 秒 空间限制:131072 KB
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例
31
#include <cstdlib>
#include <map>
#include <cstring>
#include <iostream>

int main()
{
    int *is_prime;
    is_prime= (int *) malloc(sizeof(int) *10010000);
    is_prime[0]= is_prime[1]= 1;
    for(int i=2; i<10010000; i++)
    {
        if(!is_prime[i])
            for(int j=i+i; j<10010000; j+= i)
            {
                is_prime[j]= 1;
            }
    }
    std::map<int, int> m;
    int cnt=1;
    for(int i=1; i<= 10010000; i++)
    {
        if(!is_prime[i])
        {
             m[i]= cnt++;
        }
    }
    int n;
    while(std::cin>> n)
    {
        int rec;
        for(int i=n; ; i++)
        {
            if(!is_prime[i] && !is_prime[m[i]])
            {
                rec=  i;
                break;
            }
        }
        std::cout<< rec<<\n;
    }
    free(is_prime);
    is_prime=NULL;
    return 0;
}

 

以上是关于1181 质数中的质数(质数筛法)的主要内容,如果未能解决你的问题,请参考以下文章

1181 质数中的质数(质数筛法)(51NOD基础)

51Nod 1181 质数中的质数(质数筛法)

51nod 1181 质数中的质数(质数筛法)

51nod 1181 质数中的质数(质数筛法)

51Nod - 1181 质数中的质数(质数筛法)

[51NOD1181]质数中的质数(质数筛法)(欧拉筛)