我在Haskell做了一个功课,我应该在其中编写一个模块,帮助检测列表中的素数,比如说:
#innerbutton {
...
-margin-top: 25px;
...
}
#button {
...
- margin-top:-30px !important;
+ vertical-align: top;
...
}
对于作业,我应该遍历这个列表的每个元素,并消除它的所有元素。例如,我在第2号,我应该消除4,6,8,10。然后转到数字3并删除6和9,依此类推,直到结束,仅返回带有素数的列表。
我有使用函数[2,3,4,5,6,7,8,9,10]
的想法,但我被困在这个地方(虽然我对Haskell很新)
是的,这是我的作业,但不,我没有 去做,它只是练习。所以我感谢任何帮助。
答案 0 :(得分:4)
不是使用map
(我认为没有做一些预处理就不可能),你可以自己动手:
sieveWith _ [] = []
sieveWith ss (x:xs) | any ((==) 0 . mod x) ss = sieveWith ss xs
| otherwise = x : (sieveWith (x:ss) xs)
和
sieve = sieveWith []
现在,如果您致电sieve
:
*Main> sieve [2,3,4,5,6,7,8,9,10]
[2,3,5,7]
该函数使用通过函数调用传递的变量(第一个)以及每次拾取的值,添加到列表中。如果变量列表上的 no 模运算产生零(第二个保护),则选择一个值。如果any
ulo的mod
产生零,则简单地省略该值。