225 Tribonacci non-divisors.pl 693 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 06 May 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=225
  7. # Runtime: 9.636s
  8. use 5.010;
  9. use strict;
  10. use warnings;
  11. use Math::GMPz;
  12. use List::Util qw(all);
  13. use Memoize qw(memoize);
  14. my $one = Math::GMPz->new(1);
  15. sub tribonacci {
  16. my ($n) = @_;
  17. $n <= 3 ? $one : (
  18. tribonacci($n-1)
  19. + tribonacci($n-2)
  20. + tribonacci($n-3)
  21. );
  22. }
  23. memoize('tribonacci');
  24. my @tribs;
  25. foreach my $n (1 .. 30000) {
  26. push @tribs, tribonacci($n);
  27. }
  28. for (my ($c, $n) = (1, 1); ; $n += 2) {
  29. if (all { ($_ % $n) != 0 } @tribs) {
  30. say "$c -> $n";
  31. last if 124 == $c++;
  32. }
  33. }