我有两个共同工作的功能。第一个生成下一个素数。第二个将素数附加到素数列表中。当我基本上说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)
这不需要使用两个函数来完成,但这里是生成“n”以下素数的一般方法(我相信是最快的方法),使用Sieve of Eratosthenes:
正如jackj所指出的,避免使用所有偶数可以使代码更快。你知道吗
然后运行测试:
输出:
您可以使用^{} 为您完成大部分工作:
这样行吗?你知道吗
相关问题 更多 >
编程相关推荐