From 7ade005a84831095e5b2633e2b77579f79e29895 Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Mon, 21 Feb 2011 10:46:13 +0100 Subject: [PATCH] Eratosthene --- PERL_Language/eratosthene.pl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 PERL_Language/eratosthene.pl diff --git a/PERL_Language/eratosthene.pl b/PERL_Language/eratosthene.pl new file mode 100644 index 0000000..f5c6058 --- /dev/null +++ b/PERL_Language/eratosthene.pl @@ -0,0 +1,30 @@ +#!/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";