left_truncatable_primes.sf 835 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/ruby
  2. # Let a(p) be the largest left-truncatable prime that ends in "p" (without truncating "p").
  3. # The largest value of a(p) for 2 < p < 10 is:
  4. # a(7) = 357686312646216567629137
  5. # The first three terms such that a(p) > a(7) are:
  6. # a(4111) = 689787684933263366794111
  7. # a(13367) = 833757579699383379513367
  8. # a(28517) = 5391333548376627357228517
  9. # See also:
  10. # https://www.youtube.com/watch?v=azL5ehbw_24
  11. # https://en.wikipedia.org/wiki/Truncatable_prime
  12. func left_truncatable_primes(p) {
  13. var seq = [p]
  14. for n in (1..9) {
  15. var t = Number("#{n}#{p}")
  16. if (t.is_prime) {
  17. seq << left_truncatable_primes(t)...
  18. }
  19. }
  20. return seq
  21. }
  22. say left_truncatable_primes(3).max #=> 36484957213536676883
  23. say left_truncatable_primes(7).max #=> 357686312646216567629137