RosettaCodeData/Task/Prime-decomposition/Perl/prime-decomposition-2.pl
2015-02-20 00:35:01 -05:00

14 lines
280 B
Perl

sub prime_factors {
my($n, $p, @out) = (shift, 3);
return if $n < 1;
while (!($n&1)) { $n >>= 1; push @out, 2; }
while ($n > 1 && $p*$p <= $n) {
while ( ($n % $p) == 0) {
$n /= $p;
push @out, $p;
}
$p += 2;
}
push @out, $n if $n > 1;
@out;
}