$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 >