なんとか10問目。8問目で作った素数判定関数をそのまま利用。
11秒ぐらいかかりましたね。当っているのかな?
#!/usr/bin/perl use strict; use warnings; my @primes; print "sum of prime number below 2 million is ", p10(2000000), "\n"; # answer is 142913828922 sub p10 { my ($limit) = @_; push @primes, 2; my $i = 3; while($i <= $limit){ is_prime($i); $i += 2; } my $sum = 0; map {$sum += $_;} @primes; return $sum; } sub is_prime { my ($num) = @_; for my $i (@primes){ last if $i ** 2 > $num; return 0 if $num % $i == 0; } push @primes, $num; return 1; }