RosettaCodeData/Task/Prime-decomposition/Sidef/prime-decomposition-2.sidef

19 lines
352 B
Plaintext

func prime_factors(n) {
return [] if (n < 1)
gather {
while (!(n & 1)) {
n >>= 1
take(2)
}
var p = 3
while ((n > 1) && (p*p <= n)) {
while (n %% p) {
n //= p
take(p)
}
p += 2
}
take(n) if (n > 1)
}
}