• 51nod-1181-两次筛法


    题目来源: Sgu
    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     收藏
     关注
    如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
     
    Input
    输入一个数N(N <= 10^6)
    Output
    输出>=N的最小的质数中的质数。
    Input示例
    20
    Output示例
    31
        筛法两次就好了。
        
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<vector>
     6 #include<algorithm>
     7 using namespace std;
     8 #define pii pair<int,int>
     9 #define LL long long 
    10 #define mp make_pair
    11 #define pb push_back
    12 #define inf 0x3f3f3f3f
    13 
    14 bool is[1000010];
    15 vector<int>prime1,prime2;
    16 void init(){
    17     is[0]=is[1]=1;
    18     for(LL i=2;i<=1000000;++i){
    19         if(!is[i]){
    20         prime1.push_back(i);
    21         for(LL j=i*i;j<=1000000;j+=i) is[j]=1;
    22         } 
    23     }
    24     
    25     memset(is,0,sizeof(is));
    26     is[0]=is[1]=1;
    27     for(LL i=2;i<=prime1.size();++i){
    28         if(!is[i]){
    29             prime2.push_back(prime1[i-1]);
    30             for(LL j=i*i;j<=prime1.size();j+=i)is[j]=1;
    31         }
    32     }
    33 }
    34 int main(){
    35     int n;
    36     init();
    37     cin>>n;
    38     cout<<*lower_bound(prime2.begin(),prime2.end(),n)<<endl;
    39     return 0;
    40 }
  • 相关阅读:
    顺序表的扩容
    顺序表的插入
    顺序表的构造
    C# ContentType: "application/json" 请求方式传json
    顺序表构造,插入,扩容操作
    顺序表
    线性表
    算法
    数据结构的分类
    什么是数据结构
  • 原文地址:https://www.cnblogs.com/zzqc/p/9486940.html
Copyright © 2020-2023  润新知