我有这两个共同作用的功能。第一个生成下一个质数。第二个将质数追加到质数列表中。当我基本上说I=next(n)=nextPrime(primeList)时,我觉得我在第二个函数中过度使用了变量。有更好的方法写这个吗?

def nextPrime(primeList):
    checkNum = 3
    while True:
        for i in primeList:
            if checkNum % i == 0:
                break
            if i > math.sqrt(checkNum):
                yield checkNum
                break
        checkNum += 2


def primeNumbers(limit):
    primeList = [2]
    i = 0
    n = nextPrime(primeList)
    while i <= limit:
        i = next(n)
        primeList.append(i)
    return primeList

primeList = primeNumbers(200000)

最佳答案

这样行吗?

def primeNumbers(limit):
    primeList = [2]
    for i in nextPrime(primeList):
        if i > limit:
            break
        primeList.append(i)
    return primeList

10-07 22:52