12 lines
452 B
Plaintext
12 lines
452 B
Plaintext
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);
|