545 Faulhaber s Formulas.pl 608 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 18 August 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=545
  7. # Runtime: 3 min, 38 sec
  8. use 5.010;
  9. use strict;
  10. use warnings;
  11. use ntheory qw(divisors vecprod is_prime);
  12. sub F {
  13. my ($m) = @_;
  14. my $c = 308;
  15. my $n = 20010;
  16. for (my $k = 1 ; ; ++$k) {
  17. if (
  18. vecprod(
  19. map { $_ + 1 }
  20. grep { is_prime($_ + 1) } divisors($c * $k)
  21. ) == $n
  22. ) {
  23. (return $c * $k) if (--$m <= 0);
  24. }
  25. }
  26. }
  27. say F(10**5);