zoukankan      html  css  js  c++  java
  • PAT 乙级 -- 1007 -- 素数对猜想

    题目简述

          让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
          现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。

    输入格式:每个测试输入包含1个测试用例,给出正整数N。

    输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

    输入样例
    20

    输出样例
    4

    C++代码样例

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <string.h>
    
    using namespace std;
    
    bool isPrime(int p) //素数判定
    {
        int i = 0;
        for(i=2;i<=sqrt(p);i++)
        {
            if(p%i==0)
            {
                return false;
            }
        }
        return true;
    }
    
    void setPrime(long (&Prime)[10005], const int N) //按照要求在数组中置素数
    {
        int p = 1; //素数
        int i = 0; //Prime数组序数
        while(1)
        {
            if(isPrime(p))
            {
                if(p>N)
                {
                    return;
                }else{
                    Prime[i] = p;
                    i++;
                }
            }
            p++;
        }
        return;
    }
    
    void clacBetPrime(long (&Prime)[10005], long (&betPrime)[10005]) //计算素数数组差值
    {
        int i = 0, j = 1;
        while(Prime[j] != 0)
        {
            betPrime[i] = Prime[j] - Prime[i];
            i++;
            j++;
        }
        return;
    }
    
    int main(void)
    {
        int i=0,j=0;
        int N = 0;
        int count = 0;
        long Prime[10005];
        long betPrime[10005];
        memset(Prime,0,sizeof(Prime));
        memset(betPrime,0,sizeof(betPrime));
        scanf("%d",&N);
        setPrime(Prime,N);
        clacBetPrime(Prime,betPrime);
        for(i=0; betPrime[i]!=0; i++)
        {
            if(betPrime[i] == 2)
            {
                count++;
            }
        }
        printf("%d",count);
        return 0;
    }
    
  • 相关阅读:
    Mysql备份恢复
    Mysql事务学习笔记
    MongoDB进阶
    MongoDB入门
    Mysql流程解析
    Mysql Explain学习笔记
    面试题
    聚集索引和非聚集索引
    端口号占用
    classpath: 和classpath*:的区别
  • 原文地址:https://www.cnblogs.com/csnd/p/12897036.html
Copyright © 2011-2022 走看看