$m=250;print 2;for($b=3;$b<=$m;$b+=2){if(!$d[$a]){for($a=$b*$b;$a<=$m;$a+=$b){$c[$a]=1}}print",$b"}
####
use strict;
use warnings;
use Benchmark qw(:all) ;
my $m = 1e7;
cmpthese
(
5,
{
Op => sub { op(); },
Ath => sub { ath(); },
}
);
sub op
{
my @c;
my $last = 2;
for (2 .. $m)
{
for (my $a = $_ * 2; $a <= $m; $a += $_)
{
$c[$a]++
}
$last = $_ if !$c[$_];
}
print "$last\n";
}
sub ath
{
my @d;
my $last = 2;
for (my $a = 3; $a <= $m; $a += 2)
{
next if $d[$a];
for (my $b = $a * $a; $b <= $m; $b += $a)
{
$d[$b]++
}
$last = $a;
}
print "$last\n";
}
##
##
23:05 >perl 1205_Obfu.pl
9999991
9999991
9999991
9999991
9999991
9999991
9999991
9999991
9999991
9999991
s/iter Op Ath
Op 62.2 -- -87%
Ath 8.02 676% --
23:11 >