如何减少代码中的重复?
- 这段代码会生成一个给定数字以内的所有质数。它在生成质数方面工作得很好,但输出的结果重复得让人受不了。
代码如下:
numP = 1 x = 3 y = int(input('Enter number of primes to be found: ')) while numP<=y: for n in range(2, x): for b in range(2, n): if n % b == 0: break else: # loop fell through without finding a factor print (n) x += 2 numP += 1
输出的结果像这样(例如,当y=4时):
2 2 3 2 3 5 2 3 5 7
我想避免重复,想要的输出应该是这样的:
2 3 5 7
- 我该如何修改代码呢?
2 个回答
0
没有必要让n从2循环到x。可以去掉这个循环,把所有提到'n'的地方都换成'x'。也就是说:
def find_primes(y):
x = 3
numP = 0
while True:
for b in range(2, x):
if x % b == 0:
break
else:
# loop fell through without finding a factor
print (x)
numP += 1
if numP >= y:
return
x += 2
0
如果你把数据存储在一个集合里,就能避免重复的内容。