PAT乙级 1007

1007. 素数对猜想 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

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

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

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

输入样例:
20
输出样例:
4
 
  
题目很简单,求相邻素数的差值,判断是否符合素数对即可。
官网上有一个测试点给的数值可能比较大,稍微改进一下(= = 更好的改进方法没有研究 毕竟是水题,给的上限还是很小的)有一处循环的条件是sqrt(i)
 
  
 
  

//1007 20/20
#include <iostream>
#include <math.h>
#include <vector>

using namespace std;

int main(void)
{
    int n=0;
    cin>>n;
    vector<int> A;
    
    for(int i=2;i<=n;i++)
    {
        int j;
        for(j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
                break;
        }
        if(j>sqrt(i)){
            A.push_back(i);
        }
    }
    int counts=0;
    for(int i=0;i<A.size()-1;++i){
        if(A[i+1]-A[i]==2)
            ++counts;
    }
    cout<<counts;
}


你可能感兴趣的:(C++,C语言,STL,pat,乙级)