【发布时间】:2014-09-15 14:14:59
【问题描述】:
您好,我正在尝试从列表中删除 m 的所有倍数(例如 [2..100])
我的代码:
crossOut :: Int -> [Int] -> [Int]
crossOut n ns = [ x | x <- ns , x /= (n*x)]
【问题讨论】:
标签: haskell
您好,我正在尝试从列表中删除 m 的所有倍数(例如 [2..100])
我的代码:
crossOut :: Int -> [Int] -> [Int]
crossOut n ns = [ x | x <- ns , x /= (n*x)]
【问题讨论】:
标签: haskell
x /= (n*x) 测试 x 是否是 n 乘以自身,这是行不通的。请改用x `mod` n /= 0。
【讨论】:
您的函数在用英文阅读时听起来像:“ns 中的任何 x,其中 x 不等于 n 乘以 x,对于某些输入 n”。除了 n = 1,这将始终为真,因此不会删除任何元素。
【讨论】: