Math-GF
view release on metacpan or search on metacpan
lib/Math/GF.pm view on Meta::CPAN
return if $n < 2;
for my $p (2, 3) { # handle cases for 2 and 3 first
next if $n % $p;
return $p if $first_only;
push @retval, $p;
$n /= $p until $n % $p;
}
my $p = 5; # tentative divisor, will increase through iterations
my $top = int(sqrt($n) + MARGIN); # top attempt for divisor
my $d = 2; # increase for $p, alternates between 4 and 2
while ($p <= $top) {
if ($n % $p == 0) {
return $p if $first_only;
unshift @retval, $p;
$n /= $p until $n % $p;
$top = int(sqrt($n) + MARGIN);
}
$p += $d;
( run in 1.667 second using v1.01-cache-2.11-cpan-71847e10f99 )