prog.sf 911 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/ruby
  2. # a(n) is the least k for which A237196(k) = n.
  3. # https://oeis.org/A372648
  4. # Known terms:
  5. # 4, 10, 43, 1, 2, 26, 3, 28, 13, 2311675, 8396, 12918370, 37697697
  6. var P = [nil]+1e5.primes
  7. func a(n, pn=prime(n)) {
  8. return nil if (n <= 0)
  9. var t = 1
  10. for j in (1..Inf) {
  11. if (j != n) {
  12. t *= P[j]
  13. }
  14. if (is_composite(t+pn)) {
  15. if (j >= n) {
  16. return j-1
  17. }
  18. else {
  19. return j
  20. }
  21. }
  22. }
  23. return nil
  24. }
  25. assert_eq(a(2311675), 10)
  26. assert_eq(a(8396), 11)
  27. assert_eq(a(12918370), 12)
  28. assert_eq(a(37697697), 13)
  29. var table = []
  30. var k = 1
  31. 1e9.each_prime {|p|
  32. var v = a(k, p)
  33. if (!table[v]) {
  34. table[v] = k
  35. say "a(#{v}) = #{k}"
  36. }
  37. ++k
  38. }
  39. __END__
  40. a(4) = 1
  41. a(5) = 2
  42. a(7) = 3
  43. a(1) = 4
  44. a(2) = 10
  45. a(9) = 13
  46. a(6) = 26
  47. a(8) = 28
  48. a(3) = 43
  49. a(11) = 8396