sub eratosthenes {
my %D;
my $q = 2;
return sub {
while (defined(my $p = delete $D{$q})) {
my $x = $p + $q;
$x += $p while exists $D{$x};
$D{$x} = $p;
++$q;
} ## end while (defined(my $p = delete...
$D{$q * $q} = $q;
return $q++;
};
} ## end sub eratosthenes
It's nice, even if it tends to blow for increasing values (due to memory requirements).
The Sieve of Eratosthenes 0 Comments More | Login | Reply /