如何减少代码中的重复?

0 投票
2 回答
1428 浏览
提问于 2025-04-17 03:12
  1. 这段代码会生成一个给定数字以内的所有质数。它在生成质数方面工作得很好,但输出的结果重复得让人受不了。
  2. 代码如下:

    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  
    
  3. 输出的结果像这样(例如,当y=4时):

    2
    2
    3
    2
    3
    5
    2 
    3
    5 
    7
    
  4. 我想避免重复,想要的输出应该是这样的:

    2
    3 
    5 
    7
    
  5. 我该如何修改代码呢?

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

如果你把数据存储在一个集合里,就能避免重复的内容。

撰写回答