如标题所示,我正在寻找满足任意给定数n的goldbachs猜想的所有素数对。这是我实现的算法:
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)。
发布于 2022-09-16 17:33:50
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))https://stackoverflow.com/questions/73743874
复制相似问题