【发布时间】:2016-01-13 15:40:08
【问题描述】:
您好,我必须为 Eratosthenes 的筛子实现一个功能。
我已经有函数了
removep p l
删除l 中匹配谓词p 和函数的元素
nats
返回一个无限的自然数列表,我应该在我的解决方案中同时使用这两个。
现在,我确实了解筛子本身的工作原理,但似乎我在实施时遇到了问题。
我正在做这样的事情:
sieve = (drop 1 nats)
where
sieve (h:t) = h : (removep (\x -> (mod x p) == 0) t) : sieve
但这似乎不起作用。有什么帮助吗? 另请注意,这是一项任务,因此如果可能,请不要提供确切的解决方案。我宁愿了解我做错了什么以及我需要如何改变它。提前致谢。
【问题讨论】:
-
令人耳目一新地看到有人只是在寻求正确的方向,而不是让其他人来做所有的工作。
标签: haskell recursion sieve-of-eratosthenes