429 Sum of squares of unitary divisors.pl 696 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 17 August 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=429
  7. # Runtime: 5.372s
  8. use 5.020;
  9. use strict;
  10. use warnings;
  11. use experimental qw(signatures);
  12. use ntheory qw(forprimes mulmod powmod vecsum todigits);
  13. sub factorial_power ($n, $p) {
  14. ($n - vecsum(todigits($n, $p))) / ($p - 1);
  15. }
  16. sub sigma_of_unitary_divisors_of_factorial ($n, $k, $m) {
  17. my $sigma = 1;
  18. forprimes {
  19. $sigma = mulmod($sigma, 1 + powmod($_, $k * factorial_power($n, $_), $m), $m);
  20. } $n;
  21. return $sigma;
  22. }
  23. my $n = 100_000_000;
  24. my $m = 1_000_000_009;
  25. say sigma_of_unitary_divisors_of_factorial($n, 2, $m);