231 The prime factorisation of binomial coefficients.pl 673 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 25 August 2016
  5. # Website: https://github.com/trizen
  6. # https://projecteuler.net/problem=231
  7. # Runtime: 1.583s
  8. use 5.020;
  9. use strict;
  10. use warnings;
  11. use experimental qw(signatures);
  12. use ntheory qw(forprimes vecsum todigits);
  13. sub factorial_power ($n, $p) {
  14. ($n - vecsum(todigits($n, $p))) / ($p - 1);
  15. }
  16. my $n = 20000000;
  17. my $k = 15000000;
  18. my $j = $n - $k;
  19. my $sum = 0;
  20. forprimes {
  21. my $p = factorial_power($n, $_);
  22. if ($_ <= $k) {
  23. $p -= factorial_power($k, $_);
  24. }
  25. if ($_ <= $j) {
  26. $p -= factorial_power($j, $_);
  27. }
  28. $sum += $p * $_;
  29. } $n;
  30. say $sum;