zoukankan      html  css  js  c++  java
  • 19新生赛 质数中的质数

    题目描述: hhs刚刚学会了如何判断一个数是质数,但现在hhs被一个与质数有关的问题难住了,求求你帮他解决这个问 题。问题如下: 如果质数在质数列表中也是质数,则称为质数中的质数。 例如:3 5分别是排第二和第三的质数,因此它们是 质数中的质数。 现在给出一个数字N,最小质数> = N中的质数是多少。(可以考虑用质数筛法来做)
    输入格式: 输入一个数N(N <= 10^6)
    输入格式: 输出>=N的最小的质数中的质数。
    样例
    输入 20
    输出 31

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e6;
    int a[N+10],prime[N+10];
    void init() { //初始化
     int k=1;
     for(int i=2; i<=N; i++) {
      if(a[i]==0) {
       for(int j=i+i; j<=N; j=j+i) {
        a[j]=1;
       }
       prime[i]=k++;
      }
     }
     /* 初始时,i=2 ,a[2]不存在(未赋值),满足a[2]==0,往下进行,那么a[4]=1,a[6]=1……,都由不存在(未赋值)变为存在(已经赋值)
     // prime【2】=1    质数2的标号为1
     //prime 【3】=2     质数3的标号为2
     当i=4,因为a【4】==1,已经存在,不满足a【i】==0,则直接跳过
     prime 【5】=3   质数5的标号为3
      因为,质数3的标号2、质数5的标号3也为质数,所以3和5被称为质数中的质数。*/
    }
    int main() {
     init();
     int n,i;
     cin>>n;
     for( i=n; a[i]==1||a[prime[i]]==1; i++);     //a[i]==1||a[prime[i]]==1    因为只要a【i】==1,那么i就不是质数    a【i】==1判断是否为质数,
     //           a[prime[i]]==1判断是否为质数中的质数,因为 是||,那么满足其中一个,i++
     cout<<i<<" ";                        //如果两者都不满足,那么输出i
     return 0;
    }

    先将质数筛选出来,再判断

  • 相关阅读:
    HTTP与HTTPS的区别
    Linux内核结构体--kfifo 环状缓冲区
    POSIX 线程详解
    linux的fork()函数-进程控制
    HDU 3435 A new Graph Game(最小费用最大流)&amp;HDU 3488
    Memcached安装使用和源代码调试
    结构-01. 有理数比較(10)
    Android:你不知道的 WebView 使用漏洞
    关于文件异步上传
    &lt;二代測序&gt; 批量下载 NCBI sra 文件
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11617329.html
Copyright © 2011-2022 走看看