077 Prime summations.pl 609 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=77
  6. # Runtime: 0.245s
  7. use 5.010;
  8. use strict;
  9. use warnings;
  10. use ntheory qw(primes);
  11. use Memoize qw(memoize);
  12. my $primes;
  13. sub count {
  14. my ($n, $i, $sum) = @_;
  15. ($sum == $n) ? 1
  16. : ($sum > $n || $i > $#{$primes}) ? 0
  17. : (count($n, $i, $sum + $primes->[$i]) +
  18. count($n, $i+1, $sum))
  19. }
  20. memoize('count');
  21. foreach my $i (4 .. 1e6) {
  22. $primes = primes(1, $i - 2);
  23. if (count($i, 0, 0) > 5000) {
  24. say $i; last;
  25. }
  26. }