zoukankan      html  css  js  c++  java
  • 51nod 1181 质数中的质数

    题目来源: Sgu
    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     收藏
     关注
    如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
     
    Input
    输入一个数N(N <= 10^6)
    Output
    输出>=N的最小的质数中的质数。
    Input示例
    20
    Output示例
    31
    法一、筛出质数后再筛质数中的质数
    #include<cstdio>
    #include<algorithm>
    #define N 1001001
    using namespace std;
    int n,prime[N],cnt;
    bool v[N],g[N];
    int main()
    {
        for(int i=2;i<N;i++)
        {
            if(!v[i]) prime[++cnt]=i;
            for(int j=1;j<=cnt;j++)
            {
                if(prime[j]*i>N-1) break;
                v[i*prime[j]]=true;
                if(i%prime[j]==0) break;
            }
        }
        for(int i=1;i<=cnt;i++)
         g[prime[prime[i]]]=true;
        scanf("%d",&n);
        for(int i=n;i<N;i++)
         if(g[i]) 
         {
             printf("%d",i);
             return 0;
         }
    }

    法二、

    #include<cstdio>
    #include<algorithm>
    #define N 1001001
    using namespace std;
    int n,prime[N],cnt;
    bool v[N],g[N];
    int main()
    {
        for(int i=2;i<N;i++)
        {
            if(!v[i]) prime[++cnt]=i;
            for(int j=1;j<=cnt;j++)
            {
                if(prime[j]*i>N-1) break;
                v[i*prime[j]]=true;
                if(i%prime[j]==0) break;
            }
        }
        scanf("%d",&n);
        int pos;
        pos = upper_bound( prime, prime + cnt, n - 1 ) - prime;
        //第一个大于等于n的质数的编号,也就是自pos以后的质数,都满足题目>=n的要求 
        pos = upper_bound( prime, prime + cnt, pos-1 ) - prime;
        //所以要找>=pos的质数,最小的在哪一个位置 
        printf( "%d
    ", prime[prime[pos]] );
    }
  • 相关阅读:
    网络安全基础——习题集
    文件上传
    python-nmap
    获得shell的几种姿势
    一句话木马
    svn: Failed to run the WC DB work queue associated svn的bug解决
    myEclipse卡顿解决
    myEclipse或eclipse复制或修改项目后的部署名称
    java跨域问题
    下拉框选中已选的选项查询操作
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6644361.html
Copyright © 2011-2022 走看看