1007 素?cái)?shù)對(duì)猜想
讓我們定義d?n為:dn=pn+1?pn,其中p?i是第i個(gè)素?cái)?shù)。顯然有d1=1,且對(duì)于n>1有
dn是偶數(shù)?!八?cái)?shù)對(duì)猜想”認(rèn)為“存在無(wú)窮多對(duì)相鄰且差為2的素?cái)?shù)”。
現(xiàn)給定任意正整數(shù)N(<10e5),請(qǐng)計(jì)算不超過(guò)N的滿足猜想的素?cái)?shù)對(duì)的個(gè)數(shù)。
輸入格式
輸入在一行給出正整數(shù)N。
輸出格式
在一行中輸出不超過(guò)N的滿足猜想的素?cái)?shù)對(duì)的個(gè)數(shù)。
輸入樣例
20
輸出樣例
4
代碼
import math
def main():
num = int(input())
numList = []
count = 0
for i in range(2, num + 1):
if isPrime(i):
numList.append(i)
length = len(numList)
for i in range(length):
if i > 1:
if numList[i] - numList[i - 1] == 2:
count = count + 1
print(count)
def isPrime(num):
if num == 2 or num == 3:
return True
if num % 6 != 1 and num % 6 != 5:
return False
temp = math.sqrt(num)
for i in range(5, int(temp + 1), 6):
if num % i == 0 or num % (i + 2) == 0:
return False
return True
if __name__ == "__main__":
main()

測(cè)試結(jié)果
遇到問(wèn)題
1.運(yùn)行超時(shí)問(wèn)題
這里我參考了一位大佬的代碼,才解決了超時(shí)的問(wèn)題。
其主要思想就是,只要是質(zhì)數(shù)那么它肯定與6的倍數(shù)相隔1(除了2和3)。
2.審題錯(cuò)誤
題目要求是不超過(guò)N,所以需要判斷的數(shù)可能包括N。體現(xiàn)在代碼中應(yīng)為:
for i in range(2, num + 1)