some-usable-scripts/perl/eratosthene.pl

31 lines
673 B
Perl

#!/usr/bin/perl -w
use strict;
sub Crible
{
my ($n) = @_;
# Liste initiale :
my @nombres = (2..$n);
# Liste des nombres premiers trouvés :
my @premiers = ();
# Tant qu'il y a des éléments (un tableau
# en contexte booléen vaut faux s'il est vide) :
while( @nombres )
{
# On extrait le premier nombre
my $prem = shift @nombres;
# On indique qu'il est premier
push @premiers, $prem;
# On supprime ses multiples
@nombres = grep { ($_ % $prem) != 0} @nombres;
}
# On renvoie la liste des nombres premiers
return @premiers;
}
my @t;
@t = Crible(10000) unless defined($ARGV[0]);
@t = Crible($ARGV[0]) if defined($ARGV[0]);
my $t = join(':',@t);
printf "$t\n";