use prime; use strict; my @prime = prime::make_prime_table(100 * 10000); my %prime_hash; my $sum = 0; my @lp; my @rp; foreach my $p (@prime) { $prime_hash{$p} = 1; } foreach my $p (@prime) { if ($p > 10 &&is_rprime($p) && is_lprime($p)) { $sum += $p; print "$p\n"; } } print "S:", $sum,"\n"; sub is_rprime { my $n = shift; my $k = int(log($n) / log(10)) + 1; my $ok = 1; for (my $i = 1; $i <= $k; ++$i) { my $r = $n % (10 ** $i); if (!exists($prime_hash{$r})) { $ok = 0; last; } } return $ok; } sub is_lprime { my $n = shift; my $k = int(log($n) / log(10)) + 1; my $ok = 1; for (my $i = 0; $i < $k; ++$i) { my $r = int($n / (10 ** $i)); if (!exists($prime_hash{$r})) { $ok = 0; last; } } return $ok; }