pat 乙级 1007 素数对猜想 (20分)

让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20

输出样例:
4

//注意这里cin>>n; int p[n];这样是正确,但是cin>>n; int p[n]={0};就不正确了!!!(cin>>n; int p[1000]={0};正确)//判断n是不是素数,只需判断[2,sqrt(n)]
#include 
#include 
using namespace std;
int main(){
     
	int n=0;
	cin>>n;
	int p[n];//用于存储这个范围内的所有素数,
	int m=2,i=0;
	if(n<5)      
	   cout<<0;
	else{
          
	   while((m)<=(n))     {
             
	         int k=2;      
	         while((m)%(k)!=0)        {
                 
	         	if(k>(int)sqrt(m))           {
                    
	         		p[i++]=m;                
	         		break;           }            
	         	 k++;        }     
	         m++;     }
	i=0;m=0;
	while(p[(i)+1])  {
      
		if(p[i+1]-p[i]==2)  m+=1;    
		i++;}cout<<m;
	}   
 return 0;
 }

你可能感兴趣的:(PAT,c++)