18 lines
352 B
Text
18 lines
352 B
Text
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)
|
|
}
|
|
}
|