続・ガウスくんとルビ緒

第三問目である。「1 から 99 までの奇数を足した答えは何か?」

ガウスくんは 「1 から 100 まで足したものから、 2 から 100 までの偶数を引いたものですね。先程の計算から 1 から 100 までの和は 5050 で、1 から 50 までの和は 51 が 25 個あるものが 2 倍されていると数えることができますから、 2 かける 51 かける 25」

と黒板に書き出した。

    1 + 2 + 3 + 4 + .... + 97 + 98 + 99 + 100
 -(     2     + 4             + 98 +    + 100)

=   5050 
  -2 (  1     + 2 + .... +      49 +       50) 

=   5050 - 2 * 51 * 25 

言葉を続けるガウスくんは、

5050 - 2550 = 2500

「答えは 2500 です。」

一方ルビ緒は、プログラムを作った。method には step もある。飛び飛びに計算してくれるのである。

開始する値.step(終了したい値[, 増える間隔]) do |変数|
 変数の処理
end

これを用いて、additionodd.rb

#!/usr/koeki/bin/ruby
sum = 0
print "0"
1.step(99, 2) do |odd|
  printf("+ %d", odd)
  sum += odd
end
printf("は %d です\n", sum)

ルビ緒の答えも 2500 と出るだろうか?

基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>