PAT乙級(jí)1007-Python3實(shí)現(xiàn)

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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容