left_truncatable_primes_in_base.sf 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/ruby
  2. # Generate left-truncatable primes in a given base.
  3. # See also:
  4. # https://oeis.org/A103443 -- Largest left-truncatable prime in base n (given in decimal).
  5. # https://oeis.org/A076623 -- Total number of left truncatable primes (without zeros) in base n.
  6. # https://www.youtube.com/watch?v=azL5ehbw_24
  7. # https://en.wikipedia.org/wiki/Truncatable_prime
  8. # https://rosettacode.org/wiki/Find_largest_left_truncatable_prime_in_a_given_base
  9. func generate_from_suffix(p, base) {
  10. var seq = [p]
  11. for n in (1 ..^ base) {
  12. var t = [p..., n]
  13. if (is_prime(digits2num(t, base))) {
  14. seq << __FUNC__(t, base)...
  15. }
  16. }
  17. return seq
  18. }
  19. func left_truncatable_primes(base) { # finite sequence for each base
  20. var prime_digits = (base-1 -> primes) # prime digits < base
  21. prime_digits.map {|p| generate_from_suffix([p], base)... }\
  22. .map {|t| digits2num(t, base) }\
  23. .sort
  24. }
  25. for n in (3..9) {
  26. var ltp = left_truncatable_primes(n)
  27. say ("There are #{'%4d' % ltp.len} left-truncatable primes in base #{'%2d' % n}, where largest is #{ltp.max}")
  28. }
  29. __END__
  30. There are 3 left-truncatable primes in base 3, where largest is 23
  31. There are 16 left-truncatable primes in base 4, where largest is 4091
  32. There are 15 left-truncatable primes in base 5, where largest is 7817
  33. There are 454 left-truncatable primes in base 6, where largest is 4836525320399
  34. There are 22 left-truncatable primes in base 7, where largest is 817337
  35. There are 446 left-truncatable primes in base 8, where largest is 14005650767869
  36. There are 108 left-truncatable primes in base 9, where largest is 1676456897
  37. There are 4260 left-truncatable primes in base 10, where largest is 357686312646216567629137
  38. There are 75 left-truncatable primes in base 11, where largest is 2276005673