largest_factorial_less_than_10_to_the_10_to_the_n.sf 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 14 May 2018
  4. # https://github.com/trizen
  5. # Find the largest number whose factorial is less than 10^(10^n).
  6. # See also:
  7. # https://oeis.org/A119906
  8. define τ = Num.tau
  9. func a_1(n) {
  10. var t = n*log(10)
  11. (n + 10).bsearch_le { |k|
  12. lngamma(k+1) <=> t
  13. }
  14. }
  15. func a_2(n) {
  16. var t = n*log(10)
  17. (n + 10).bsearch_le { |k|
  18. ((k*(log(k)-1) + log(τ*k)/2)) <=> t
  19. }
  20. }
  21. for j in (0..50) {
  22. var n = 10**j
  23. var k = a_1(n)
  24. say "#{j} #{k}"
  25. assert(lgamma(k+1).log < (j*log(10) + log(log(10))), j)
  26. assert(lgamma(k+2).log > (j*log(10) + log(log(10))), j)
  27. assert_eq(k, a_2(n))
  28. }
  29. __END__
  30. 0 3
  31. 1 13
  32. 2 69
  33. 3 449
  34. 4 3248
  35. 5 25205
  36. 6 205022
  37. 7 1723507
  38. 8 14842906
  39. 9 130202808
  40. 10 1158787577
  41. 11 10433891463
  42. 12 94851898540
  43. 13 869200494599
  44. 14 8019346203785
  45. 15 74419210652835
  46. 16 694100859679691
  47. 17 6502464891216879
  48. 18 61154108320430275
  49. 19 577134533044522749
  50. 20 5463531774867094396
  51. 21 51865645374019695121
  52. 22 493605691759140412264
  53. 23 4708412700327664456441
  54. 24 45006563676466829747866
  55. 25 431030515495800330959690
  56. 26 4135271421019159985268144
  57. 27 39737872881916155456682466
  58. 28 382434585531529136506976638
  59. 29 3685654889911271767089158861
  60. 30 35566000205751593943612309324
  61. 31 343621523511389642125797372225
  62. 32 3323659049880171756547149226120
  63. 33 32181951201285474537895485226321
  64. 34 311917635656773532983489112416836
  65. 35 3026031831285250971158863726796844
  66. 36 29382559187200956976646535194767034
  67. 37 285539923960811790873783241089282065
  68. 38 2777061068592571504718455581667927021
  69. 39 27028829371643939893024878660179216026
  70. 40 263254321831235169282034131531639572407
  71. 41 2565752521753016953512727986724591348610
  72. 42 25022497618334069614020507552176153613923
  73. 43 244179878634545913976035414597821008724201
  74. 44 2384185475195871407008689012256184860639887
  75. 45 23292152343661431664635019895122205974095819
  76. 46 227671082380656404276747365211226185638628432
  77. 47 2226510468543990374699303977240445014667122494
  78. 48 21784662108910684733496380891610749490017427379
  79. 49 213244246864459623913534200247452501697066546234
  80. 50 2088314769879577064148725973109379417356880574721