エラトステネスの篩で素数を出力するperlスクリプトです。
chmod +x sieve.pl
./sieve.pl <n> として実行してください。
sieve.pl
#!/usr/bin/env perl
sub sieve {
local($n,@tab,@l,$v,$x,@t);
$n=$_[0];
@tab=(2..$n);
@l=();
while (@tab) {
$v=shift(@tab);
push(@l,$v);
@t=();
while (@tab) {
$x=shift(@tab);
if ( $x % $v ) {
push(@t,$x);
}
}
@tab=@t;
}
return @l;
}
@primes=&sieve($ARGV[0]);
$,=',';
$len=@primes;
print "@primes\nNumber of primes is $len.\n";