孪生素数是比另一个素数少2或2的素数,例如,孪生素数对(41,43)的任一成员。换句话说,一个孪生素数是一个素数,它的质数间隙为2。有时,孪生素数一词用于一对孪生素数;这个词的另一种名称是素孪生素或素数对。(来自wiki 素数) 您的任务,如果您选择接受它,是写一个函数,计数的一对孪生素数从1到n。 如果n被孪生素数(n-1 ==素数&& n+1 ==素数)包裹,那么即使n+1超出了范围,它也应该计算在内。 Ex n= 10 双素数是(3,5) (5,7),所以你的函数应该返回2!
我试图完成这个挑战,我的代码似乎适用于N的一些值,但对于一些值,它返回的答案太小,当N=2时,它应该返回3(根据挑战测试)。
到目前为止,我已经尝试过使用count +=系统,例如:
if prime_list[count] + 2 or prime_list[count] - 2 in prime_list:
count += 1但是改变这一点还没有解决我的问题。
(我是新人)
这是我的密码
def prime_finder(n):
primes = []
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
for i in prime_list:
if prime_list[count] + 2 or prime_list[count] - 2 in prime_list:
count += 1
elif prime_list[count] + 2 and prime_list[count] - 2 in prime_list:
count += 2
twin_count = count // 2
return twin_count发布于 2021-09-07 22:36:05
i是素数之一,所以您应该添加到i,而不是prime_list[count]。
没有必要加和减,因为这将计算每对两次。只需添加2,检查是否为素数,并返回该计数,而不是除以2。
def twin_prime(n):
prime_list = prime_finder(n)
count = 0
for i in prime_list:
if i + 2 in prime_list:
count += 1
return counthttps://stackoverflow.com/questions/69094914
复制相似问题