PAT乙級 素數對猜想 20 素數

2021-09-10 06:52:59 字數 1143 閱讀 5155

讓我們定義 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。輸出格式 ...