PAT-B 1007 素數對猜想【素數】

Enjoy_process發表於2019-02-16

                                                 PAT-B 1007 素數對猜想

                        https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744

 

 

題目

讓我們定義d​n​​為:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i個素數。顯然有d​1​​=1,且對於n>1有d​n​​是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。現給定任意正整數N(<1^0​5​​),請計算不超過N的滿足猜想的素數對的個數。

輸入

輸入在一行給出正整數N

輸出

在一行中輸出不超過N的滿足猜想的素數對的個數。

樣例輸入

20

樣例輸出

4

分析

素數篩選,具體看程式。

C++程式

#include<iostream>

using namespace std;

const int N=100005;

int prime[N+1];

int solve(int n)
{
	//素數篩選 
	prime[0]=prime[1]=1;
	for(int i=2;i<=n;i++)
	  if(!prime[i])
	  {
	  	for(int j=i+i;j<=n;j+=i)
	  	  prime[j]=1;
	  }
	//判斷
	int ans=0;
	for(int i=2;i<=n-2;i++)
	  if(!prime[i]&&!prime[i+2]&&prime[i+1])//i、i+2是素數,i+1不是素數 
	    ans++;
	return ans;
}

int main()
{
	int n;
	scanf("%d",&n);
	printf("%d\n",solve(n));
	return 0;
} 

 

相關文章