#! /usr/bin/perl use warnings; use strict; my $max = shift; my @primes = (2); my $i = 3; while ($i <= $max) { my $sqrt = sqrt $i; for my $num (@primes) { last if ($i % $num == 0); push @primes, $i and last if $num > $sqrt; } $i += 2; } print "1, @primes"; #### real 0m37.682s user 0m37.296s sys 0m0.015s #### real 0m4.035s user 0m3.531s sys 0m0.062s