Harmonic series: Difference between revisions
Content added Content deleted
ReeceGoding (talk | contribs) (→{{header|R}}: Alternative solution.) |
|||
Line 332: | Line 332: | ||
Term 4550 is the first above 9 |
Term 4550 is the first above 9 |
||
Term 12367 is the first above 10</pre> |
Term 12367 is the first above 10</pre> |
||
=={{header|jq}}== |
|||
{{trans|Wren}} |
|||
'''Works with gojq, the Go implementation of jq''' |
|||
This entry requires a rational arithmetic module such as is available |
|||
at [[Arithmetic/Rational#jq]]. |
|||
<lang jq># include "rational"; # a reminder |
|||
def harmonic: |
|||
reduce range(1; 1+.) as $i ( r(0;1); |
|||
radd(.; r(1; $i) )); |
|||
def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] + .; |
|||
def task1: |
|||
"The first 20 harmonic numbers and the 100th, expressed in rational form, are:", |
|||
(range(1;21), 100 |
|||
| "\(.) : \(harmonic|rpp)" ); |
|||
def task2($limit): |
|||
"The first harmonic number to exceed the following integers is:", |
|||
limit($limit; |
|||
foreach range(0; infinite) as $n ( |
|||
{i: 1, n: 1, h: r(0;1)}; |
|||
.emit = false |
|||
| .h = radd(.h; r(1; .n)) |
|||
| .i as $i |
|||
| if .h | rgreaterthan($i) |
|||
then .emit = "integer = \(.i|lpad(2)) -> n = \(.n| lpad(6)) -> harmonic number = \(.h|r_to_decimal(6)) (to 6dp)" |
|||
| .i += 1 |
|||
else . |
|||
end |
|||
| .n += 1; |
|||
select(.emit).emit) ); |
|||
task1, "", task2(10)</lang> |
|||
{{out}} |
|||
<pre> |
|||
The first 20 harmonic numbers and the 100th, expressed in rational form, are: |
|||
1 : 1 // 1 |
|||
2 : 3 // 2 |
|||
3 : 11 // 6 |
|||
4 : 25 // 12 |
|||
5 : 137 // 60 |
|||
6 : 49 // 20 |
|||
7 : 363 // 140 |
|||
8 : 761 // 280 |
|||
9 : 7129 // 2520 |
|||
10 : 7381 // 2520 |
|||
11 : 83711 // 27720 |
|||
12 : 86021 // 27720 |
|||
13 : 1145993 // 360360 |
|||
14 : 1171733 // 360360 |
|||
15 : 1195757 // 360360 |
|||
16 : 2436559 // 720720 |
|||
17 : 42142223 // 12252240 |
|||
18 : 14274301 // 4084080 |
|||
19 : 275295799 // 77597520 |
|||
20 : 55835135 // 15519504 |
|||
100 : 14466636279520351160221518043104131447711 // 2788815009188499086581352357412492142272 |
|||
The first harmonic number to exceed the following integers is: |
|||
integer = 1 -> n = 2 -> harmonic number = 1.5 (to 6dp) |
|||
integer = 2 -> n = 4 -> harmonic number = 2.083333 (to 6dp) |
|||
integer = 3 -> n = 11 -> harmonic number = 3.019877 (to 6dp) |
|||
integer = 4 -> n = 31 -> harmonic number = 4.027245 (to 6dp) |
|||
integer = 5 -> n = 83 -> harmonic number = 5.002068 (to 6dp) |
|||
integer = 6 -> n = 227 -> harmonic number = 6.004366 (to 6dp) |
|||
integer = 7 -> n = 616 -> harmonic number = 7.001274 (to 6dp) |
|||
integer = 8 -> n = 1674 -> harmonic number = 8.000485 (to 6dp) |
|||
integer = 9 -> n = 4550 -> harmonic number = 9.000208 (to 6dp) |
|||
integer = 10 -> n = 12367 -> harmonic number = 10.000043 (to 6dp) |
|||
</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |