【发布时间】:2017-06-20 17:03:32
【问题描述】:
我正在尝试在 python 中编写一个程序,以使用类似于在 Haskell 中编写素数程序(在他们的网站顶部找到的程序)中使用的逻辑来生成素数。我写了以下两个生成器函数。
def integers():
i=2
while True:
yield i
i+=1
def primes(li):
x=li
while True:
i=next(x)
y=(j for j in x if %i!=0)
yield i
x=y
整数是数字 2,3,4,5... 的生成器 所以我的猜测是
a=primes(integers())
应该给出一个素数的生成器,但它什么也没给出。这是我得到的输出。
>>> next(a)
2
>>> next(a)
3
>>> next(a)
4
>>> next(a)
5
>>> next(a)
6
有什么建议吗?
【问题讨论】:
-
为什么你的
integers函数会生成 2 的倍数?您可以通过在每次迭代中将i增加 2 而不是 1 来避免这种情况。 -
@ForceBru 我相信其目的是重现页面顶部的实现here
标签: python