4乗的ガウスを解く
1から40までの整数の4乗の和をプログラムで算出してみました。コードのインデントが整っていないのはご了承ください。
1⁴ + 2⁴ + 3⁴ + ........ + 40⁴
こんな感じの計算ですね。
- 具体的な数字で試してみる
- 40回繰り返し処理をしてみる
- 40回足した総和だけを出す
- Whileで試してみる
上記の流れで説明していきます。
1. 具体的な数字で試してみる
まずは原始的に少ない数字で解いてみます。以下のコードを実行すると「98」が出力されました。1の4乗は1、2の4乗は16、3の4乗は81なので、これを40回分記述しても解けそうです。
num = 1**4 + 2**4 + 3**4
puts num
2. 40回繰り返し処理をしてみる
40回手作業で足し算していくのは大変なので繰り返し処理をしてみました。
num = 0
40.times do |i|
num += (i+1)**4
puts num
end
これで実行結果から総和が「21781332」であることがわかります。
3. 40回足した総和だけを出す
ただし上記のコードだと40回分の足し算の結果が全て実行結果として算出されます。40回足した総和だけが実行結果に出るように書き換えてみました。
num = 0
40.times do |timesCount|
n = timesCount + 1
num += n**4
if n == 40
puts num
end
end
これで「21781332」だけが実行結果として算出されるようになりました。
4. Whileで試してみる
上記のコードで実装完了ですが、これが最適なコードとは言えなさそうです。勉強のため他の記述の仕方も試してみることにしました。ネットで4乗的ガウスを調べてみたところ、whileを使っている人が多そうでした。
n = 1
num = 0
while n <= 40
num += n**4
if n == 40
puts num
end
n += 1
end
これで同じく「21781332」だけが実行結果として算出されるようになりました。こっちの方がスッキリしているかもしれませんね。
まだまだ勉強不足ですが、これからもっと勉強して瞬時のひらめきで可読性の高いコードを書けるようにしていきたいと思います。