ガウスくんとルビ緒が足し算で競争をした。 問題は、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
である。