首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的在(2,n)范围内计数素数双胞胎的代码只适用于N的某些值。

我的在(2,n)范围内计数素数双胞胎的代码只适用于N的某些值。
EN

Stack Overflow用户
提问于 2021-09-07 21:54:03
回答 1查看 234关注 0票数 0

挑战

孪生素数是比另一个素数少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 +=系统,例如:

代码语言:javascript
运行
复制
if prime_list[count] + 2 or prime_list[count] - 2 in prime_list:
count += 1

但是改变这一点还没有解决我的问题。

(我是新人)

这是我的密码

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 22:36:05

i是素数之一,所以您应该添加到i,而不是prime_list[count]

没有必要加和减,因为这将计算每对两次。只需添加2,检查是否为素数,并返回该计数,而不是除以2。

代码语言:javascript
运行
复制
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 count
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69094914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档