Matt Owen

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

return to portfolio
  1.  #!/usr/bin/perl
  2.  
  3.  use strict;
  4.  use warnings;
  5.  use bigint;
  6.  
  7.  # is palindrome?
  8.  sub is_palindrome {
  9.   my ($n) = shift;
  10.   return ($n == reverse $n) ? 1 : 0;
  11.  }
  12.  
  13.  #
  14.  my ($nonlychrels) = 0;
  15.  
  16.  # ...
  17.  for my $sum (1..10000) {
  18.   for (1..50) {
  19.   $sum = reverse($sum) + $sum;
  20.   last if $sum > 10**14;
  21.   if (is_palindrome $sum) {
  22.   $nonlychrels++;
  23.   last;
  24.   }
  25.   }
  26.  }
  27.  
  28.  
  29.  print 10000 - $nonlychrels;