Matt Owen

source code for "files/pe/pe_037.pl"

return to portfolio
  1.  #!/usr/bin/perl
  2.  
  3.  use strict;
  4.  use warnings;
  5.  
  6.  
  7.  # trunctable
  8.  sub is_trunctably_prime {
  9.   my ($primes, @list) = @_;
  10.   my ($k) = 0;
  11.  
  12.   my $m = 2;
  13.  
  14.   #print '<', join(' ', sort {$a<=>$b} keys %$primes), '>', "\n";
  15.  
  16.   for my $n (@list) {
  17.   $m = $n;
  18.   while ($n) {
  19.   # print "n.. $n = ", defined $primes->{$n} ? 1 : 0, ", ";
  20.   # print "m.. $m = ", defined $primes->{$m} ? 1 : 0, "\n";
  21.   # print "\n";
  22.  
  23.   return 0 if not defined $primes->{$n};
  24.   return 0 if not defined $primes->{$m};
  25.  
  26.   $m = int $m % (10**(length($m)-1));
  27.   $n = int $n/10;
  28.   }
  29.   }
  30.  
  31.   return 1;
  32.  }
  33.  
  34.  
  35.  # file handle
  36.  open PRIMES, "primes_under_1000000.TXT" or die("CAN'T OPEN FILE.\n");
  37.  
  38.  
  39.  # init
  40.  my $sum = 0;
  41.  my $primes = {};
  42.  
  43.  
  44.  # get primes
  45.  for (<PRIMES>) {
  46.   chomp;
  47.   $_ = int $_;
  48.   $primes->{$_} = 1;
  49.  }
  50.  
  51.  
  52.  # work
  53.  for (grep { $_ } keys %$primes) {
  54.   next if $_ < 10;
  55.   $sum += $_ if is_trunctably_prime $primes, $_;
  56.  }
  57.  
  58.  
  59.  # print
  60.  print $sum;
  61.  
  62.  #close
  63.  close PRIMES;