#!/usr/local/bin/perl # $Id: sieve.perl,v 1.10 2001/05/06 04:37:45 doug Exp $ # http://www.bagley.org/~doug/shootout/ use strict; use integer; # Tony Bowden suggested using 0..8192 to create the array # and to test for defined instead of the value. my $NUM = $ARGV[0]; $NUM = 1 if ($NUM < 1); my $count; my @flags = (); while ($NUM--) { $count = 0; my @flags = (0 .. 8192); for my $i (2 .. 8192 ) { next unless defined $flags[$i]; # remove all multiples of prime: i for (my $k=$i+$i; $k <= 8192; $k+=$i) { undef $flags[$k]; } $count++; } } print "Count: $count\n";