我正在尝试解决一些在线难题,找到一个非常大的数字的最大素数因子(准确地说是7393913335919140050521110339491123405991919445111971).在我寻找解决方案时,我偶然发现了这个Perl代码(从这里开始):
use strict;
use warnings;
my $magic = <number>;
sub largestprimef($);
sub max($$);
print largestprimef($magic);
sub largestprimef($) {
my $n = shift;
my $i;
return largestprimef(max(2, $n/2)) if($n % 2 == 0);
my $sn = int( sqrt($n) );
for ( $i = 3 ; $i <= $sn ; $i += 2 ) {
if ( $n % $i == 0 ) { last; }
}
if ( $i > $sn ) #loop ran over, …
Run Code Online (Sandbox Code Playgroud)