545 Faulhaber s Formulas -- v2.pl 594 B

1234567891011121314151617181920212223242526272829303132333435
  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: 1 min, 15 sec
  8. use 5.010;
  9. use strict;
  10. use integer;
  11. use warnings;
  12. use List::Util qw(product);
  13. use ntheory qw(divisors is_prime factor);
  14. sub F {
  15. my ($m) = @_;
  16. my $c = 308;
  17. my $n = 20010;
  18. my $t = product(map { $_ - 1 } factor($n));
  19. for (my $k = 1 ; ; ++$k) {
  20. if (product(grep { is_prime($_ + 1) } divisors($c * $k)) == $t) {
  21. (return $c * $k) if (--$m <= 0);
  22. }
  23. }
  24. }
  25. say F(10**5);