Rationalクラス

Rationalクラスで有理数が扱えます。Rational(分子, 分母)で有理数。分母を省略すると整数になります。

require "rational"

def harmony(n)
    sum = Rational(0)
    for k in 1..n
        sum += Rational(1, k)
    end
    return sum
end

for n in 1..20
    r = harmony(n)
    print "#{r} = #{r.to_f}\n"
end

実行結果です。あれ、調和級数というのは収束しないんでしたっけ。

1 = 1.0
3/2 = 1.5
11/6 = 1.83333333333333
25/12 = 2.08333333333333
137/60 = 2.28333333333333
49/20 = 2.45
363/140 = 2.59285714285714
761/280 = 2.71785714285714
7129/2520 = 2.82896825396825
7381/2520 = 2.92896825396825
83711/27720 = 3.01987734487735
86021/27720 = 3.10321067821068
1145993/360360 = 3.18013375513376
1171733/360360 = 3.25156232656233
1195757/360360 = 3.31822899322899
2436559/720720 = 3.38072899322899
42142223/12252240 = 3.43955252264076
14274301/4084080 = 3.49510807819631
275295799/77597520 = 3.54773965714368
55835135/15519504 = 3.59773965714368