134 Prime pair connection.sf 569 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/ruby
  2. # Author: Daniel "Trizen" Șuteu
  3. # Date: 24 August 2016
  4. # License: GPLv3
  5. # Website: https://github.com/trizen
  6. # https://projecteuler.net/problem=134
  7. # Runtime: 2.189s (previously: 2.855s)
  8. # k = 10^(1+floor(log10(p1)))
  9. # g = (invmod(k, p2) * -p1) % p2
  10. # S = k*g + p1
  11. var p1 = 5
  12. var p2 = p1.next_prime
  13. var sum = 0
  14. var len = p1.len
  15. var pow = 10**len
  16. loop {
  17. if (p1.len != len) {
  18. len += 1
  19. pow *= 10
  20. }
  21. sum += (((invmod(pow, p2) * -p1) % p2) * pow + p1)
  22. p1 = p2
  23. p2.next_prime!
  24. p1 > 1000000 && break
  25. }
  26. say sum