Harmonic series: Difference between revisions

(→‎{{header|R}}: Alternative solution.)
Line 332:
Term 4550 is the first above 9
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}}==
2,451

edits