zoukankan      html  css  js  c++  java
  • nyoj 题目 孪生素数问题

    孪生素数问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。
     
    输入
    第一行给出N(0<N<100)表示测试数据组数。
    接下来组测试数据给出m,表示找出m之前的所有孪生素数。
    (0<m<1000000)
    输出
    每组测试数据输出占一行,该行为m范围内所有孪生素数组数。
    样例输入
    1
    14
    样例输出
    4

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int prime[1000006];
     5 int flag[1000006];
     6 int ans[1000006];
     7 
     8 int getPrime() {
     9     int cnt = 0;
    10     for(int i = 2; i <= 1000000; i++) {
    11         if(flag[i] == 0) {
    12             if(i != 2 && i - prime[cnt-1] <= 2) {
    13                 ans[i] = ans[i-1]+1;
    14             }
    15             else {
    16                 ans[i] = ans[i-1];
    17             }
    18             prime[cnt++] = i;
    19             for(int p = 2*i; p <= 1000000; p+=i) {
    20                 flag[p] = 1;
    21             }
    22         }
    23         else {
    24             ans[i] = ans[i-1];
    25         }
    26     }
    27     return cnt;
    28 }
    29 int main(int argc, char const *argv[])
    30 {
    31     memset(flag, 0, sizeof(flag));
    32     int n;
    33     scanf("%d",&n);
    34     ans[2] = 0;
    35     int cnt = getPrime();
    36     while(n--) {
    37         int m;
    38         scanf("%d",&m);
    39         printf("%d
    ",ans[m]);
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    pom变成红橙色
    拉链表
    Newsgroups数据集研究
    python 安装第三方包
    概率图(三)CRF条件随机场
    概率图(二)马尔科夫随机场MRF
    LDA主题模型
    TF-IDF算法
    mysql 自定义排序顺序
    [转]解决a different object with the same identifier value was already associated with the session错误
  • 原文地址:https://www.cnblogs.com/jasonJie/p/6091044.html
Copyright © 2011-2022 走看看