130 Composites with prime repunit property -- v2.pl 646 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 12 May 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=130
  7. # Runtime: 2.814s
  8. use 5.010;
  9. use strict;
  10. use warnings;
  11. use ntheory qw(gcd powmod is_prime);
  12. my $sum = 0;
  13. my $count = 0;
  14. for (my $n = 2 ; ; ++$n) {
  15. is_prime($n) && next;
  16. gcd($n, 10) != 1 && next;
  17. my $r = 1;
  18. my $p = 0;
  19. foreach my $k (1 .. $n - 1) {
  20. $r += powmod(10, $k, $n);
  21. $r %= $n;
  22. $p += 1;
  23. last if ($r == 1);
  24. }
  25. if ($r == 1 and ($n - 1) % $p == 0) {
  26. $sum += $n;
  27. last if ++$count == 25;
  28. }
  29. }
  30. say $sum;