已知一个整数列表,筛选出该列表中不同的质数,并求出该列表中有多少个质数可以表达为该列表中另外两个质数的和
运行结果:
代码如下:
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)
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}个质数可以表达为该列表中另外两个质数的和")
有帮助的话采纳一下哦!
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!