99 questions/Solutions/36

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

(**) Determine the prime factors of a given positive integer.

Construct a list containing the prime factors and their multiplicity.

prime_factors_mult n = map swap $ encode $ primeFactors n
  where swap (x,y) = (y,x)

using primeFactors from problem 35 to generate the list of prime factors in ascending order, and encode from problem 10 to compress this list to a list of numbers paired with their multiplicity.

Without relying on encode from problem 10, but using group from Data.List:

prime_factors_mult = map encode . group . primeFactors
    where encode xs = (head xs, length xs)