python质数问题

已知一个整数列表,筛选出该列表中不同的质数,并求出该列表中有多少个质数可以表达为该列表中另外两个质数的和

运行结果:

img

代码如下:

print("请输入一系列整数,用空格分隔:")
ls = list(map(int,input().split()))
ls2 = [ls[0]]
# 删除重复元素
for i in range(1,len(ls)):
    # 判断是否是素数
    flag = True
    for k in range(2,ls[i]):
        if ls[i]%k == 0:
            flag = False
            break

    if flag == True:
        # 判断是否已经在列表中
        f2 = True
        for k in range(0,len(ls2)):
            if ls2[k] == ls[i]:
                f2 = False
        # 是素数且不再列表中,插入列表
        if f2 == True:
            ls2.append(ls[i])
# 打印素数列表
print("列表中的不同质数为:")
print(ls2)

# 求列表中的素数是否可以作为另外两个素数的和
ls2.sort()
nmb = 0
for i in range(0,len(ls2)):
    for j in range(0,i):
        for k in range(j,i):
            if (ls2[i] == (ls2[j]+ls2[k])):
                print("%d=%d+%d"%(ls2[i],ls2[j],ls2[k]))
                nmb+=1

# 输出总数
print("列表中总共有%d个质数可以表达为列表中另外两个质数的和"%nmb)






img

lis = [1,2,3,3,4,5,7,8,9,6,4]
prime_list = []
# 判断一个数是否是质数
def isPrime(a):
    for i in range(2,a):
        if a%i == 0:
            return False
    return True

for k in lis:
    if isPrime(k):
        if k not in prime_list:
            prime_list.append(k)
count = 0
for m in range(len(prime_list)):
    for n in range(m+1,len(prime_list)):
        if prime_list[m] + prime_list[n] in prime_list:
            count += 1

print(f"该质数列表为{prime_list},该列表中有{count}个质数可以表达为该列表中另外两个质数的和")

有帮助的话采纳一下哦!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632