はじめに
この記事は N 高等学校プログラミングクラスに向けたものです。
プログラミングは(論理)数学を電気(回路)で置き換えたものをさらにメモリ上にソフトウェアとして構築したものであるという関係上、数学を上手に使うと有利な場面が出てきます。
(様々な定理があるものの)算術に関しては最終的には次の公理に帰着すると考えると、少しは気が楽になりませんか?
算術以外も「突き詰めると」シンプルな形に行き着くことが多いので、急がば回れの精神で順番にたどっていくのはどうでしょうか。
算術の公理
以下、参考文献の 478 ページの補遺 8 からの引用です。
1: 任意の数、$m,n$ に対して
$m+n=n+m$
および
$mn=nm$
が成り立つ。
2: 任意の数、$m,n,k$ に対して
$(m+n)+k=m+(n+k)$
および
$(mn)k=m(nk)$
が成り立つ。
3: 任意の数、$m,n,k$ に対して
$m(n+k)=mn+mk$
が成り立つ。
4: 数 $0$ が存在し、任意の数 $n$ に対して次の性質を持つ。
$n+0=n$
5: 数 $1$ が存在し、任意の数 $n$ に対して次の性質を持つ。
$n \times 1=n$
6: すべての数 $n$ に対して、次式を満たす数 $k$ が存在する。
$n+k=0$
7: 任意の数、$m,n,k$ に対して、
$k \neq 0$ であり、$kn=km$ ならば、$m=n$ である。
プログラミングへの適用例
例えば 3 の性質を利用すると、プログラムの処理速度を上げることが出来ます。次の式の左辺は
$m(n+k)=mn+mk$
- 乗算一回
- 加算一回
となっているのに対し、右辺は
- 乗算二回
- 加算一回
となっています。右辺は演算の回数が一回多くなっている上に、一般的に乗算の方が処理に時間がかかることを考えると、左辺の形の方が有利であることが分かります。式を変形するだけで処理速度を上げられるというのは数学を利用するメリットになるでしょう。
参考文献
Simon Singh (原著),「フェルマーの最終定理」,青木 薫(翻訳),新潮社(2006/5/30)
https://www.amazon.co.jp/dp/4102159711