#!/usr/local/bin/perl -wl use strict; my ($prime, $max) = (2, shift || 50); # First prime, max number. my @sieve = (0, 0, map {1;} ($prime .. $max)); # Init sieve. while ((my $product = $prime * $prime) <= $max) { do {$sieve [$product] = 0;} while (($product += $prime) <= $max); do {$prime ++;} while !$sieve [$prime]; } map {print if $sieve [$_];} (0 .. $max);