【发布时间】:2014-07-23 02:08:55
【问题描述】:
我想在 Haskell 中仅使用列表理解方法和/或 .(函数组合运算符)来查找给定数字的所有素数。我特别想避免递归解决方案。
例如,pfactors 120 必须产生 [2,2,2,3,5] 输出。
我试过了:
pfactors n = [p | p <- [2..n], n `mod` p == 0, [d | d <- [1..p], p `mod` d == 0] == [1,p]]
但是当我调用pfactors 120 时,结果是[2,3,5],并不是所有的素因数。
【问题讨论】:
-
因素 n = [p | p mod p == 0, [d | d mod d == 0] == [1,p]]
-
但是当我调用 pfactors 120 时,结果是 [2,3,5],不是所有的素数。
-
已经放好了。
-
你得到的是
n的独特的主要因素的列表,但正如你的例子清楚地表明,有些因素发生不止一次 ,即使您确实多次枚举值,您也不知道必须执行多少次才能获得所有多个因素.. -
我不明白为什么这个问题被否决了......