$ time perl -w use strict; my $UPPER = 1_000_000; my $sieve = ""; GUESS: for (my $guess = 2; $guess <= $UPPER; $guess++) { next GUESS if vec($sieve,$guess,1); #print "$guess\n"; for (my $mults = $guess * $guess; $mults <= $UPPER; $mults += $guess) { vec($sieve,$mults,1) = 1; } } __END__ real 0m10.003s user 0m2.191s sys 0m0.003s