码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-23 00:12:32      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:线性筛   amp   技术   while   pid   put   F12   break   clu   

1181 质数中的质数(质数筛法)技术分享(51NOD基础)

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

#define maxn 10000000 

bool prime[maxn] ; 
int p[maxn] ; 
int total ; 

void init(){
    total = 0 ; 
    prime[0] = prime[1] = false ; 
    for(int i = 2 ; i<maxn ; i++){
        prime[i] = true ; 
    }
    //线性筛法  复杂度  O(n) 
    for(int i=2 ; i<maxn ; i++){
        if(prime[i]) p[++total] = i ; 
        for(int j=1 ; j<=total&&p[j] * i < maxn ; j++){
            prime[i * p[j] ] = false ; 
            if(i%p[j] == 0 )
                break ; 
        }
    }
    
} 

int main(){
    int n ; 
    init() ; 
    while(~scanf("%d" , &n)){
        for(int i=1 ; i<=total ; i++){
            if(prime[i] && p[i] >=n){
                printf("%d\n" , p[i]) ; 
                break ; 
            }
        }
    }
    return 0 ; 
}

 

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

标签:线性筛   amp   技术   while   pid   put   F12   break   clu   

原文地址:http://www.cnblogs.com/yi-ye-zhi-qiu/p/7577462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!