Я хочу найти все простые множители заданного числа, используя только метод понимания списка и/или .
(оператор композиции функций) в 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]
, а не все простые множители.
mod
p == 0, [d | d ‹- [1..p], pmod
d == 0] == [1,p]] - person sasas   schedule 03.06.2014n
, но, как ясно показывает ваш пример, некоторые множители встречаются более одного раза, и даже если вы перечислили значения несколько раз , вы бы не знали, сколько раз вам нужно сделать это, чтобы получить все множественные факторы. - person didierc   schedule 03.06.2014