孿生素數是一個比另一個素數少2或多2的素數--例如,孿生素數對(41,43)的任何一個成員。換句話說,雙子素數是一個素數,它的素數缺口為2。有時,孿生素數一詞被用于一對孿生素數;另一個名稱是素數孿生或素數對。(來自維基https://en.wikipedia.org/wiki/Twin_prime)你的任務,如果你選擇接受的話,就是寫一個函式,計算從1到n的孿生素數的集合數量。
如果n被孿生素數包裹(n-1==素數&& n 1==素數),那么即使n 1在范圍之外,也應該計算在內。
例如n = 10
雙質數是(3,5)(5,7),所以你的函式應該回傳2!
雙質數是(3,5)(5,7)。
我正在努力完成這項挑戰,我的代碼似乎對某些N值有效,但對某些N值來說,它回傳的答案太小,當N=2時,它應該回傳3(根據挑戰測驗)。
到目前為止,我試著在count =系統上做了些手腳,例如:
if prime_list[count] 2 or prime_list[count] - 2 in prime_list:
count = 1 in prime_list.
但改變這一點還沒有解決我的問題
(我是新手)這是我的代碼
我的代碼如下
def prime_finder(n)。
原數 = []
for possibleprime in range(2, n 1) 。
isprime = True: 意思是說,如果你是一個人,那么你就會有一個人的名字。
for num in range(2, possibleprime)。
if possibleprime % num == 0:
isprime = False if isprime:
primes.append(possibleprime)
return primes
def twin_prime(n)。
prime_list = prime_finder(n)
count = 0: prime_list = prime_finder(n)
for i in prime_list:
if prime_list[count] 2 or prime_list[count] - 2 in prime_list:
count = 1 in prime_list.
elif prime_list[count] 2 and prime_list[count] - 2 in prime_list:
count = 2 in prime_list.
twin_count = count // 2
return twin_count
uj5u.com熱心網友回復:
i是素數之一,所以你應該添加到i,而不是prime_list[count]。
沒有必要做加減法,因為這將使每一對都計算兩次。只需要加2,檢查是否是素數,然后回傳這個數,而不是除以2。
def twin_prime(n)。
prime_list = prime_finder(n)
count = 0: prime_list = prime_finder(n)
for i in prime_list:
if i 2 in prime_list:
count = 1
return count
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/319984.html
標籤:
上一篇:尋找字母數字代碼的公式
