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