1. 程式人生 > >PAT乙級—1007. 素數對猜想 (20)-native

PAT乙級—1007. 素數對猜想 (20)-native

讓我們定義 dn 為:dn = pn+1 - pn,其中 pi 是第i個素數。顯然有 d1=1 且對於n>1有 dn 是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。

現給定任意正整數N (< 105),請計算不超過N的滿足猜想的素數對的個數。

輸入格式:每個測試輸入包含1個測試用例,給出正整數N。

輸出格式:每個測試用例的輸出佔一行,不超過N的滿足猜想的素數對的個數。

輸入樣例:
20
輸出樣例:
4

思路:先找出不超過n的所有素數放在一個數組中,在對這個陣列遍歷,相鄰兩個素數差為2即一個素數對。

#include<iostream>
#include<cmath> using namespace std; int main() { int n,k=0; int a[100000]; cin>>n; int j; for(int i=2;i<=n;i++) { for(j=2;j<=sqrt(i);j++) { if(i%j==0) break; } if(j>sqrt(i)) { a[k++]=i; } } int
prime=0; for(int i=0;i<k;i++) { if(a[i+1]-a[i]==2) { prime++; } } cout<<prime; return 0; }

題目連結: