Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.60 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. #use warnings; # gotta ignore the deep recursion warnings
  5.  
  6.  
  7. my %lcache;
  8.  
  9.  
  10. sub collatz {
  11.     my $n = shift;
  12.  
  13.     if ($n == 1) {
  14.     return 1;
  15.     }
  16.  
  17.     if (exists $lcache{$n}) {
  18.     return $lcache{$n};
  19.     }
  20.    
  21.     my $ret;
  22.     if ($n % 2 == 0) {
  23.     $ret = collatz($n / 2);
  24.     }
  25.     else {
  26.     $ret = collatz((3 * $n) + 1);
  27.     }
  28.    
  29.     $lcache{$n} = $ret + 1;
  30.     return $ret + 1;
  31. }
  32.  
  33. my $m = 0;
  34. for (my $i = 1; $i < 1000000; $i++) {
  35.     my $l = collatz($i);
  36.     if ($l > $m) {
  37.     $m = $l;
  38.     print 'Found a chain of length ', $l, ' for ', $i, "\n";
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement