首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中实现Goldbach猜想实现时的重复对

在Python中实现Goldbach猜想实现时的重复对
EN

Stack Overflow用户
提问于 2022-09-16 11:06:58
回答 1查看 35关注 0票数 0

如标题所示,我正在寻找满足任意给定数n的goldbachs猜想的所有素数对。这是我实现的算法:

代码语言:javascript
复制
import math
def prime(n):
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            return False
    return True
def Plist(n):
    res=[]
    for i in range(2,n+1):
        if prime(i):
            res.append(i)
    return res
def Goldbach(n):
    res=[]
    plist=Plist(n)
    hmap={}
    for num in plist:
        diff=n-num
        if diff in plist and (num not in hmap.keys()):
             res.append((num,diff))
             hmap[num]=1
             
       
    return res

这个算法给出了冗余对,我想知道如何去掉一个冗余对,例如(3,23)(23,3)

EN

回答 1

Stack Overflow用户

发布于 2022-09-16 17:33:50

代码语言:javascript
复制
import math
def prime(n):
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            return False
    return True
def Plist(n):
    res=[]

    for i in range(2,n+1):
        if prime(i):
            res.append(i)
    return res
def Goldbach(n):
    plist=Plist(n)
    res=[]
    while plist:
        i = plist.pop()
        for j in plist:
            p = (i,j)
            if sum(p)==n:
                res.append(p)
    return res
         

print(Goldbach(26))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73743874

复制
相关文章

相似问题

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