全手動 Project Euler problem 1


はじめに

 Project Euler について,wikipedia では以下のように説明されている.

プロジェクト・オイラー: Project Euler、名称はレオンハルト・オイラー由来)は、数学やプログラミングなどに興味を持つ大人や学生が主な利用者であり、プログラミング (コンピュータ)による一連の計算問題の解決を目的としたウェブサイトである。

wikipedia 該当ページより (2024 年 1 月 3 日参照)

 数値計算技能の向上を目的とした演習用サイトなのでプログラミングで解ける数学の問題がいっぱいある (2024 年 1 月 3 日現在 870 問).
 前回の投稿の最後で数値計算の勉強もしてみたいというようなことを書いたが,とりあえず Excel の扱いになれるところからかなぁ Excel VBA とかやってみるべきかなぁと思い,このサイトにとりかかってみた.とりあえず最初の 5 問は解いた.
 ただ最初の方はほんとに初心者向けなので VBA 使わなくても表計算で解けちゃうな,というか手計算でもいけるのでは?となったので手慰みに全手動で解くのも挑戦.

問題

$${1000}$$ 未満の $${3}$$ または $${5}$$ の倍数の合計を求めよ

解答

$${3 \times 333=999<3\times334 }$$
$${5 \times 199 =995 < 999 < 1000= 5 \times 200}$$
$${15 \times 66=990<999<1005=15 \times 67}$$

だから $${1000}$$ 未満の $${3}$$ または $${5}$$ の倍数の合計 $${S}$$ は,
$${1000}$$ 未満の $${3}$$ の倍数の和と $${5}$$ の倍数の和をそれぞれ求めて足し合わせ,
そこから重複している $${15}$$ の倍数の和を引けば求まる.

$${S= \displaystyle\sum_{n=1}^{333}3n+ \displaystyle\sum_{n=1}^{199}5n- \displaystyle\sum_{n=1}^{66}15n}$$

ここで
$${\displaystyle\sum_{n=1}^{m}n=\cfrac{1}{2}m(m+1)}$$
より

$${S=3 \times \cfrac12 \times 333 \times 334+5 \times \cfrac12 \times 199 \times 200 - 15 \times \cfrac12 \times 66 \times 67}$$
$${=166833+99500-33165}$$
$${=233168}$$

所感

高校の定期テストで出そう.

いいなと思ったら応援しよう!