right_truncatable_primes.sf 953 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/ruby
  2. # Generate right-truncatable primes that begin with a given prefix (without truncating the prefix).
  3. # See also:
  4. # https://www.youtube.com/watch?v=azL5ehbw_24
  5. # https://en.wikipedia.org/wiki/Truncatable_prime
  6. func right_truncatable_primes(p) {
  7. var seq = [p]
  8. for n in ([1, 3, 7, 9]) {
  9. var t = Number("#{p}#{n}")
  10. if (t.is_prime) {
  11. seq << right_truncatable_primes(t)...
  12. }
  13. }
  14. return seq
  15. }
  16. #
  17. ## Find the largest right-truncatable prime that begins with "n" and remains prime
  18. ## after each digit removed from the right, up to (but not including) the prefix "n".
  19. #
  20. for n in (1..15) {
  21. say ("a(#{n}) = ", right_truncatable_primes(n).max)
  22. }
  23. __END__
  24. a(1) = 1979339339
  25. a(2) = 29399999
  26. a(3) = 37337999
  27. a(4) = 4391339
  28. a(5) = 59393339
  29. a(6) = 6733997
  30. a(7) = 73939133
  31. a(8) = 839
  32. a(9) = 9719
  33. a(10) = 103997939939
  34. a(11) = 113
  35. a(12) = 12791333
  36. a(13) = 13999133
  37. a(14) = 149399
  38. a(15) = 15797