避免在这个素数生成器函数中使用for/else,使用pure for循环



我正在做一个关于生成素数的生成器的练习。

尽管我已经找到了解决这个问题的办法。我想知道我是否不知道或不想使用for/else循环。我怎样才能只使用for循环。

def genPrimes(): 
primes = [] # primes generated so far 
last = 1 # last number tried 
while True: 
last += 1 
for p in primes: 
if last % p == 0: 
break 
else: 
primes.append(last) 
yield last

如果需要,可以使用递归函数:

def prime_number(n, d):
if n//2 < d:
return True
if n%d == 0:
return False
return prime_number(n, d+1)
def find_primes(n,i, result):
if i == n + 1:
return result
if prime_number(i, 2):
result.append(i)
return find_primes(n, i+1, result)
print(find_primes(100,2, []))

这里使用循环更好,因为它更简单,可以避免堆栈溢出;(

最新更新