nbFactors
1
_
=
[
]
nbFactors x
(
p
:
ps
)
=
exponent
:
nbFactors rest ps
where
(
exponent
,rest
)
=
countClean
0
x
countClean e y
=
case
divMod
y p
of
(
y
',0) -> countClean (e+1) y'
_
->
(
e,y
)