Perlでエラトステネスの篩
wikipediaの説明を元に書いてみた。
#!/usr/bin/env perl use strict; use warnings; my $x = 100; my @numbers = (2 .. $x); my @prime_numbers; while(1){ if($numbers[0] > sqrt $x){ push @prime_numbers, @numbers; last; } my $number = shift @numbers; push @prime_numbers, $number; @numbers = grep { $_ % $number != 0 } @numbers; } print join ',', @prime_numbers, "\n";