基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「ガウスくんとルビ緒」 講義ノート目次

ガウスくんとルビ緒が足し算で競争をした。 問題は、1 から順に 100 まで足したら、答えはいくつか、 簡単に答を出したガウスくん。

ガウスくんの解答方法は次のようなものであった。 「1 から 100 まで足した答えを x とします。 足し算の順番を入れ替えたものも用意します。 それも和の答えは x で変わりありません。二つを加えます。」

実際に調べてみよう。

  1 +   2 +   3 + .... +  98 +  99 + 100 = x
100 +  99 +  98 + .... +   3 +   2 +   1 = x

101 + 101 + 101 + .... + 101 + 101 + 101 = 2 x

10100                                    = 2 x 

「各項は 101 で、それが 100 個並んだのが右辺のものとして計算されるので、 右辺は 10100 となります。一方左辺は 2 x なので、これを解いて、

x = 5050

です。すなわち 1 から 100 まで足した答えは 5050 になります。」

一方ルビ緒は、プログラムを作った。upto do -- end を使ってみた。 upto_addition.rb 実行してルビ緒の答えも 5050 であるかどうか調べよ。

upto do -- end の構造は

始める整数.upto(終りにする整数) do |変数|
    変数の処理
end

である。