PAT 乙級 1007 素數對猜想
阿新 • • 發佈:2019-01-03
1007 素數對猜想 (20 point(s))
讓我們定義dn為:dn=pn+1−pn,其中pi是第i個素數。顯然有d1=1,且對於n>1有dn是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。
現給定任意正整數N
(<105),請計算不超過N
的滿足猜想的素數對的個數。
輸入格式:
輸入在一行給出正整數N
。
輸出格式:
在一行中輸出不超過N
的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
經驗總結:
emmmm 先用挨氏篩法求出所有的素數並依次放在一個數組裡,然後就。。。根據給定數字求比他小的滿足條件的素數對的對數就行了~~
AC程式碼
#include <cstdio> #include <cmath> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int maxn=100010; int prime[maxn],pnum=0; bool flag[maxn]={0}; void find_prime() { for(int i=2;i<maxn;++i) { if(flag[i]==false) { prime[pnum++]=i; for(int j=i+i;j<maxn;j+=i) { flag[j]=true; } } } } int main() { int n; find_prime(); while(~scanf("%d",&n)) { int count=0; for(int i=1;prime[i]<=n;++i) { if(prime[i]-prime[i-1]==2) ++count; } printf("%d\n",count); } return 0; }