题目:
提示:用Python验证哥德巴赫猜想
问题描述:
随机输入一个6~100的偶数,编写isGDBH()函数,将结果以列表形式输出。
例:输入10,结果为[“3+7=10“,”5+5=10“]。
出现的问题:1.在两个循环中一直没有输出,素数列表以及循环本身并无问题。
2.重复输出,例如3+7与7+3都输出。
list1=[]
def isGDBH(n):
for i in range(2, 100):
if i % 2 == 0:
continue
for j in range(3, int(i ** 0.5) + 1, 2):
if i % j == 0:
break
else:
list1.append(i)
list2=[]
for i in list1:
for j in list1: #第二个问题
if i+j==a:
list2.append("%d+%d=%d"%(i,j,a))
print(list2)
a=input("请输入一个6-100的偶数:") #第一个问题
isGDBH(a)
原因分析:
1.input函数输入格式为字符串,i,j为int型,无法相等,因此无输出。
2.j只遍历从i往后的list元素,这样就可以避免重复输出。
解决方案:
list1=[]
def isGDBH(n):
for i in range(2, 100):
if i % 2 == 0:
continue
for j in range(3, int(i ** 0.5) + 1, 2):
if i % j == 0:
break
else:
list1.append(i)
list2=[]
for i in list1:
for j in list1[list1.index(i)::]: #利用索引和列表的切片,实现j遍历的元素为i-end
if i+j==a:
list2.append("%d+%d=%d"%(i,j,a))
print(list2)
a=int(input("请输入一个6-100的偶数:")) #在input前添加int强制转换数据类型
isGDBH(a)