prog.jl 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/julia
  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. import Nemo: is_prime,next_prime
  7. const P = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
  8. function a(n, pn)
  9. t = 1
  10. j = 1
  11. while true
  12. if (j != n)
  13. t *= P[j]
  14. end
  15. if (!is_prime(t+pn))
  16. if (j >= n)
  17. return j-1
  18. else
  19. return j
  20. end
  21. end
  22. j += 1
  23. end
  24. return -1
  25. end
  26. a(2311675, 37872221) == 10 || println("error for n = 10")
  27. a(8396, 86351) == 11 || println("error for n = 11")
  28. a(12918370, 235313357) == 12 || println("error for n = 12")
  29. a(37697697, 729457511) == 13 || println("error for n = 13")
  30. function compute()
  31. table = Dict{Int64,Bool}()
  32. k = 1
  33. p = 2
  34. while true
  35. v = a(k, p)
  36. if haskey(table, v)
  37. ## ok
  38. else
  39. table[v] = true
  40. println("a($v) = $k")
  41. end
  42. p = next_prime(p)
  43. k += 1
  44. end
  45. end
  46. compute()