808 Reversible prime squares.sf 737 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/ruby
  2. # Author: Trizen
  3. # Date: 06 November 2022
  4. # https://github.com/trizen
  5. # Reversible prime squares
  6. # https://projecteuler.net/problem=808
  7. # From the first few terms, it seems that if n = p^2 and reverse(n) = q^2, then p = reverse(q).
  8. # However, this is not always the case, as discovered by neverforget:
  9. # 110092211^2 = 12120294922868521
  10. # 112191011^2 = 12586822949202121
  11. # Runtime: 21.784s (previously: 26 seconds).
  12. func p808(N) {
  13. var list = []
  14. for (var p = 2; list.len < N; p.next_prime!) {
  15. var t = p.sqr
  16. if (t.flip.is_square && t.flip.isqrt.is_prime && !t.is_palindrome) {
  17. list << t
  18. say [list.len, p, list.tail]
  19. }
  20. }
  21. list.sum
  22. }
  23. say p808(50)