我尝试使用迭代器来实现 Eratosthenes 的筛子(因为我想更多地使用 python 进行函数式编程)。可悲的是,发生了一些意想不到的行为。您可以在此视频中看到它:https ://imgur.com/gallery/XfXFw4a
这是我的代码:
def sieve_primes(stop=10):
L = (x for x in range(2, stop+1))
while True:
prime = next(L)
L = filter(lambda x: x % prime != 0 or x == prime, L)
#L, M = itertools.tee(L)
#print(list(M))
yield prime
当两个注释行未注释时,它可以工作(吐出具有所需素数的迭代器对象)。否则,它只会遍历每个数字。
我期待着您的回答:) 谢谢!
largeQ
拉丁的传说
扬帆大鱼
相关分类