# 99 questions/Solutions/36

< 99 questions | Solutions

Jump to navigation
Jump to search
Revision as of 19:45, 18 January 2014 by Henk-Jan van Tuyl (talk | contribs) (Added Category:Programming exercise spoilers)

(**) 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)
```