use strict; use warnings; my (@prime, $p, $limit) = 2; PRIME: for $p (3..100) { $limit = int sqrt($p); for (@prime) { last if $_ > $limit; next PRIME if $p % $_ == 0; } push @prime, $p; } #### use strict; use warnings; my ($max, $p, @prime, $limit) = (100, 2, 2); PRIME: while (1) { $limit = int sqrt(++$p); for (@prime) { last if $_ > $limit; next PRIME if $p % $_ == 0; } push @prime, $p; last if $max == $#prime + 1; }