【发布时间】:2013-03-13 11:12:38
【问题描述】:
我需要定义仅素因数为 2、3 和 5 的数字列表,即汉明数。 (即2^i * 3^j * 5^k形式的数字。序列以1、2、3、4、5、6、8、9、10、12、15、...开头)
我可以使用factors 函数或其他方式来实现。下面的factors 应该返回其参数的因子。我相信我已经正确地实现了它。
factors :: Int -> [Int]
factors n = [x | x <- [1..(div n 2) ++ n], mod n x == 0]
我尝试使用列表推导来制作 2^i * 3^j * 5^k 的列表,但在编写守卫时遇到了困难:
hamming :: [Int]
hamming = [n | n <- [1..], „where n is a member of helper“]
helper :: [Int]
helper = [2^i * 3^j * 5^k | i <- [0..], j <- [0..], k <- [0..]]
【问题讨论】:
-
顺便说一句,
factors函数有语法错误。通过尽可能小的更改,可以将其固定为factors n = [x | x <- [1..(div n 2)] ++ [n], mod n x == 0]。
标签: haskell factors hamming-numbers