prog.sf 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/ruby
  2. # Smallest integer whose factorial's decimal expansion starts with the first n digits of Pi.
  3. # https://oeis.org/A328955
  4. # Known terms:
  5. # 9, 62, 62, 10044, 50583, 1490717, 5573998, 65630447, 688395641, 5777940569, 77773146302, 1154318938997, 1544607046599
  6. define τ = Num.tau
  7. define e = Num.e
  8. define S = τ.sqrt.ln
  9. define T = τ.root(-2*e)
  10. func inverse_factorial_W(n) {
  11. var l = (n - S)
  12. l / lambert_w(l / e) - 1/2
  13. }
  14. func f(n) {
  15. var t = (n*log(10) + Num.pi)
  16. (n + 10).bsearch_le { |k|
  17. lngamma(k+1) <=> t
  18. }
  19. }
  20. func list() {
  21. var n = 0
  22. var min = Inf
  23. #for (var k = 1; k <= 1e6; ++k) {
  24. for k in (1..1e6) {
  25. var t = inverse_factorial_W(log(Num.pi) + log(10)*k)
  26. var u = abs(t-round(t))
  27. if (u < min) {
  28. min = u
  29. say [k, f(k), min]
  30. }
  31. }
  32. }
  33. list();
  34. #~ say f(35835) #=> 17254
  35. #~ say f(65612) #=> 17254
  36. #~ say f(215977) #=> 50583
  37. #~ say f(361229) #=> 80759
  38. #~ say f(606107) #=> 129560
  39. #~ say f(18156119873678) #=> 1544607046599
  40. # 3.1415379577347882738422690467326012034732246681462146178704777124... × 10^215977
  41. # 3.1416026537017914713059250694747809117798457191096278165784809615... × 10^361229
  42. # 3.1416004264160752960646703239185746757645713102358236165630546745... × 10^606107
  43. # 3.14159265358994983986225317956466410382721019457604785880109... × 10^18156119873678
  44. __END__
  45. [1, 5, 0.170754964162595106192298366446444386187233223018]
  46. [4, 8, 0.119282088619728337069203182464248972832872336214]
  47. [5, 9, 0.0660890277578190984981939385813986170490358621273]
  48. [6, 10, 0.0630814493687193013326830188988446695721598681906]
  49. [14, 17, 0.0442277472832262276235074979061839952357641312835]
  50. [29, 28, 0.0085051071500119547159455753853245768473040300154]
  51. [64, 50, 0.00805287984270237997827138030856530035151899998]
  52. [85, 62, 0.000576891375070655613865104543764424321804876135922]
  53. [1441, 612, 0.000340180561834879812264244917905836193882318073888]
  54. [6146, 2124, 0.0000744365680182018593409222990316358284558204108093]
  55. [6346, 2184, 0.0000585394753736925251787103120793998823716034723696]
  56. [31464, 8945, 0.0000554612592858082825601533548416811887612197770932]
  57. [35479, 9955, 0.0000464069349792776659391879773465441511824005031089]
  58. [35835, 10044, 0.0000144851921972712430203689860099805751717643886668]
  59. [215977, 50583, 0.00000153135254520948990175081082981918126383700418356]
  60. [361229, 80759, 0.000000327373133488305475554506903594881833756188486131]
  61. [606107, 129560, 0.000000237494686233729132768723104874503918154868482228]