harmonic_prime_powers.sf 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 25 October 2017
  4. # https://github.com/trizen
  5. # Harmonic sum of prime powers <= n, defined as:
  6. #
  7. # Sum_{p <= n} (Sum_{1 <= k <= floor(log(n)/log(p))} 1/p^k)
  8. #
  9. # where p runs over the prime number <= n.
  10. # This is equivalent with:
  11. # Sum_{p <= n} (p^(floor(log(n)/log(p))) - 1) / (p^(floor(log(n)/log(p))) * (p-1))
  12. # See also:
  13. # https://oeis.org/A294208
  14. func g((0), _) { 1 }
  15. func f((0), _) { 0 }
  16. func g(k,n) is cached {
  17. var p = prime(k)
  18. p**n.ilog(p) * (p-1) * g(k-1, n)
  19. }
  20. func f(k,n) is cached {
  21. var p = prime(k)
  22. (p**n.ilog(p) * (p-1) * f(k-1, n)) + ((p**n.ilog(p) - 1) * g(k-1, n))
  23. }
  24. for n in (0..100) {
  25. var a = f(prime_count(n), n)
  26. var b = g(prime_count(n), n)
  27. var r = a/b
  28. say ("#{a}/#{b} = #{r.as_frac}")
  29. }
  30. __END__
  31. 0/1 = 0/1
  32. 1/2 = 1/2
  33. 10/12 = 5/6
  34. 26/24 = 13/12
  35. 616/480 = 77/60
  36. 28752/20160 = 599/420
  37. 62544/40320 = 1303/840
  38. 201072/120960 = 4189/2520
  39. 23327520/13305600 = 48599/27720
  40. 3798760320/2075673600 = 659507/360360
  41. 7856979840/4151347200 = 1364059/720720
  42. 2203520071680/1129166438400 = 23909723/12252240
  43. 773928860405760/386174921932800 = 466536977/232792560
  44. 400103851647836160/195404510497996800 = 10963143031/5354228880
  45. 2039600160338780160/977022552489984000 = 55886560931/26771144400
  46. 6227358542404116480/2931067657469952000 = 170634254393/80313433200
  47. 5138685030841301237760/2380026937865601024000 = 5028706810597/2329089562800
  48. 4850377886818378181836800/2213425052215008952320000 = 158219000691307/72201776446800
  49. 9839094839400194423193600/4426850104430017904640000 = 320950612410539/144403552893600
  50. 13265040929840539616260915200/5896564339100783848980480000 = 12019576212083543/5342931457063200
  51. 21990529698502516324627120128000/9670365516125285512327987200000 = 498145556152488463/219060189739591200
  52. 40121051987172806473794354413568000/17464680122122265635264344883200000 = 21639319104296595109/9419588158802421600
  53. 87545089681885231815565554106761216000/37758638424028338303441513637478400000 = 1026467586060742391723/442720643463713815200
  54. 618209718976629242466593380695539712000/264310468968198368124090595462348800000 = 7248518908634298715661/3099044504245996706400
  55. 1717530129885936507380384068160949583872000/728439652476354702549993681094233292800000 = 387270546661863828636433/164249358725037825439200
  56. 5919637604313303301003573914750235006992384000/2492720490774085792126078376704466327961600000 = 23013211611775003714988747/9690712164777231700912800
  57. 21815436861233135229200645230588128105269821440000/9123356996233153999181446858738346760339456000000 = 1413496620483052458315226367/591133442051411133755680800
  58. 43915978628598556520875710675511829546800250880000/18246713992466307998362893717476693520678912000000 = 2845466161030211514560317759/1182266884102822267511361600
  59. 195400740619165593263204343592466772028315517583360000/80686969274686013968760716018681938748442148864000000 = 191828499673126993743052651453/79211881234889091923261227200
  60. 976789768726481019495938837775867592693119072809779200000/401014237295189489424740758612849235579757479854080000000 = 13699035358026905647679999480363/5624043567677125526551547131200
  61. 5162880049511637881709235865970085212156776385237693235200000/2107730831223515956416437427269135582207205314113044480000000 = 1005653624703641237807191509197699/410555180440430163438262940577600
  62. 31978069869926146871692793525434657652722218100335483184742400000/12987837381999305323438087426832413457560799145564580085760000000 = 79857191532028087950206392167195821/32433859254793982911622772305630400
  63. 96415240623926563034464976406927395678817054269360693261107200000/38963512145997915970314262280497240372682397436693740257280000000 = 240772828642558115069568168068462663/97301577764381948734868316916891200
  64. 659397135682416017122134398932548628700588827947077765036192563200000/265185663665661816093958869081064217976476396954137596191047680000000 = 20081446355096705499509026266599292229/8076030954443701744994070304101969600
  65. 5187734705067260485916824992918854511164941623413477164228272350822400000/2076934117829463343647885862642894955191763140944805653368285429760000000 = 1795324756558050491201297408031438977981/718766754945489455304472257065075294400
  66. 48507571248897958125847671376874091123666345658757000696017027532115148800000/19340410505227962656049113152930637822745698368478030244165473921925120000000 = 174865268141076387101830320836114656158557/69720375229712477164533808935312303556800