PAT B1007 素數對猜想 (20 分)
阿新 • • 發佈:2019-02-10
algorithm scripts text bin sel 輸出 amp urn 整數
讓我們定義d?n??為:d?n??=p?n+1???p?n??,其中p?i??是第i個素數。顯然有d?1??=1,且對於n>1有d?n??是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。
現給定任意正整數N
(<),請計算不超過N
的滿足猜想的素數對的個數。
輸入格式:
輸入在一行給出正整數N
。
輸出格式:
在一行中輸出不超過N
的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
#include <stdio.h> #include <algorithm> #include <string> #include <map> #include<iostream> #include <stack> #include <math.h> using namespace std; const int maxn = 100010; int index[maxn] = { 0 }; bool isPrime(int i){ for (int k = 2; k <= sqrt(i); k++){ if (i%k == 0)return false; } return true; } int main(){ int n, count = 0; cin >> n;if (n == 1 || n == 2){ cout << ‘0‘; return 0; } for (int i = 2; i <= n; i++){ if (isPrime(i)){ index[i] = 1; } } for (int i = 2; i <= n-2; i++){ if(index[i]==1 && (index[i + 2] - index[i] == 0))count++; } cout<< count; system("pause"); }
註意點:素數的判定一直是一個重點,本以為判斷到平方根也會超時,結果沒有還算好,有時間要去看一下時間復雜度最低的素數判定方法。這裏我是把所有素數都存起來,用了hash,也可以生成一個判斷一個,可以省點內存。
PAT B1007 素數對猜想 (20 分)