134 Prime pair connection.pl 598 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # Date: 23 August 2016
  4. # License: GPLv3
  5. # Website: https://github.com/trizen
  6. # https://projecteuler.net/problem=134
  7. # Runtime: 0.107s
  8. use strict;
  9. use ntheory qw(forprimes next_prime invmod);
  10. # k = 10^(1+floor(log10(p1)))
  11. # g = (invmod(k, p2) * -p1) % p2
  12. # S = k*g + p1
  13. my $p1 = 5;
  14. my $sum = 0;
  15. my $log = length($p1);
  16. my $pow = 10**$log;
  17. forprimes {
  18. if (length($p1) != $log) {
  19. $log += 1;
  20. $pow *= 10;
  21. }
  22. $sum += ((invmod($pow, $_) * -$p1) % $_) * $pow + $p1;
  23. $p1 = $_;
  24. } 7, next_prime(1000000);
  25. print "$sum\n";