1007 素數(shù)對猜想
讓我們定義d?n為:dn=pn+1?pn,其中p?i是第i個素數(shù)霉囚。顯然有d1=1,且對于n>1有
dn是偶數(shù)匕积∮蓿“素數(shù)對猜想”認(rèn)為“存在無窮多對相鄰且差為2的素數(shù)”。
現(xiàn)給定任意正整數(shù)N(<10e5)闪唆,請計算不超過N的滿足猜想的素數(shù)對的個數(shù)盅粪。
輸入格式
輸入在一行給出正整數(shù)N
。
輸出格式
在一行中輸出不超過N
的滿足猜想的素數(shù)對的個數(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()
測試結(jié)果
遇到問題
1.運行超時問題
這里我參考了一位大佬的代碼,才解決了超時的問題笼吟。
其主要思想就是库物,只要是質(zhì)數(shù)那么它肯定與6的倍數(shù)相隔1(除了2和3)贷帮。
2.審題錯誤
題目要求是不超過N,所以需要判斷的數(shù)可能包括N撵枢。體現(xiàn)在代碼中應(yīng)為:
for i in range(2, num + 1)