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