isPrime(n) := n = 2 or (n > 1 and none(n mod ([2]++((1...floor(sqrt(n)/2))*2+1)) = 0)); primeFactorization(num) := primeFactorizationHelp(num, []); primeFactorizationHelp(num, current(1)) := let primeFactors[i] := i when num mod i = 0 and isPrime(i) foreach i within 2 ... num; in current when size(primeFactors) = 0 else primeFactorizationHelp(num / product(primeFactors), current ++ primeFactors);