PAT Exercise 1007

PAT乙级训练题-C++

1007 素数对猜想

让我们定义dn​​为:dn​​=pn+1​​−pn​​,其中pi​​是第i个素数。显然有d​1​​=1,且对于n>1有dn​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

代码

#include <iostream>
#include <math.h>

using namespace std;

bool is_prime(int k){
    for(int i=2;i<=sqrt(k);i++){
        if(k%i==0){
            return true;
        }
    }
    return false;
}

int main(){
    int n;
    cin>>n;
    int p0=2,p1=3;
    int count=0;
    for(int m=4;m<=n;m++){
        if(!is_prime(m)){
            p0=p1;
            p1=m;
            if(p1-p0==2){
                count++;
            }
        }
    }
    cout<<count<<endl;
    return 0;
}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.