183 Maximum product of parts -- v2.pl 495 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # Date: 18 October 2017
  4. # https://github.com/trizen
  5. # https://projecteuler.net/problem=183
  6. # Runtime: 0.031s
  7. use 5.010;
  8. use strict;
  9. use warnings;
  10. use ntheory qw(gcd valuation);
  11. my $sum = 0;
  12. foreach my $n (5 .. 10000) {
  13. my $M = sprintf('%.0f', $n / exp(1));
  14. my $r = $M / gcd($n, $M);
  15. $r /= 2**valuation($r, 2) if ($r % 2 == 0);
  16. $r /= 5**valuation($r, 5) if ($r % 5 == 0);
  17. ($r == 1) ? ($sum -= $n) : ($sum += $n);
  18. }
  19. say $sum;