讓我們定義 d
nd_n
dn 為:dn=
pn+1
–p
nd_n = p_ – p_n
dn=pn
+1–
pn,其中 p
ip_i
pi 是第i個素數。顯然有 d1=
1d_1=1
d1=
1 且對於n>1有 d
nd_n
dn 是偶數。「素數對猜想」認為「存在無窮多對相鄰且差為2的素數」。
現給定任意正整數n (n< 105
10^5
105),請計算不不超過n的滿⾜足猜想的素數對的個數。
輸入在一行給出正整數n。
在一行中輸出不超過n的滿足猜想的素數對的個數。
20
4
先判斷當前數字i是否是素數,再判斷 i+2
i+2i+
2 是否是素數,滿足條件則將計數器加1
11~注意判斷是否是素數的時候,迴圈結束條件是 i
ii 的算術平方根!一開始我將迴圈條件寫成了 i/2
i / 2
i/2, 一直出現超時的情況☹。
#include using namespace std;
int a, b, countnum = 0, n, flag = 0;
int main()
}if(flag != 1)
}printf("%d", countnum);
return 0;
}
將判斷是否是素數的**封裝成為單獨的函式, 在主函式中呼叫。上面的**思路是儲存上乙個素數,再和當前素數做差比較,優化後不需要記憶上一次產生的素數,直接判斷當前素數i
ii和i−2
i - 2
i−2即可。
#include using namespace std;
int n, countnum = 0;
bool isprime(int num)
int main()
cout
}
PAT乙級1007 素數對猜想 20
題目不難,注意是i和i 2同時滿足條件即可 2017年5月23日 重寫該題,更新新 include include using namespace std bool primej int n return false int main cout include includeint judge in...
PAT乙級 1007 素數對猜想 20
題目 讓我們定義 dn 為 dn pn 1 pn,其中 pi 是第i個素數。顯然有 d1 1 且對於n 1有 dn 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 10 5 請計算不超過n的滿足猜想的素數對的個數。輸入格式 每個測試輸入包含1個測試用例,給出正整數n。輸...
PAT 乙級 1007 素數對猜想 20
讓我們定義 dn 為 dn pn 1 pn,其中 pi 是第i個素數。顯然有 d1 1 且對於n 1有 dn 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 105 請計算不超過n的滿足猜想的素數對的個數。輸入格式 每個測試輸入包含1個測試用例,給出正整數n。輸出格式 ...