はじめに
この記事では位取り記数法について私なりに色々考えてみた話を紹介していきます。
皆さんご存じのように私たちが普段とかとかのように数値を表すのに使っている記法は進位取り記数法と呼ばれています。これは、平たく言うと、数字の各桁にのべきを対応させた記数法となっています。
このように数字の各桁に何らかの値を掛けて数値を表す記法を位取り記数法といいます。位取り記数法は基本的に進法や進法という進法
として使われるのが一般的ですが、そろばんの二五進法
(で各串の境界を表し、左の数字が天、右の数字が地の状態を表すものとした)や時間を表す記数法
など少し変則的な記数法も使われています。
数学クラスタではしばしば位取り記数法の各桁にある数列を整列させたり、各桁を並べ替えたりして遊ぶようなことがあります。
でもこういうのって大体進法や進法止まりで、もっと一般の記数法で遊ばれることは少ないように感じます(尤も専用の記法がないだけで実質的に変則的な記数法で遊んでいることもありますが)。それはちょっともったいない気がしたので私なりに進じゃない記数法について軽く考察してみることにしました。
位取り記数法
定義
まず位取り記数法に求められる要件について定めておきましょう。
単調増加な正整数と非負整数について
のように表すことを進法と言う。
とりあえず非負整数を表現できるものとして次のような性質は欲しいです。
この条件と単調増加性から未満の任意の非負整数は
のように書けるので
である必要があります。特に漸化式
が成り立つのでと表せることからに注意すると
であればよいことになります。よって以下のようにまとめられます。
進法
任意に整数列を取って
と定めたとき、任意の非負整数を
のように表現することを進法と言う。このような表現は一意的であり、その表現を進展開と言う。
またのことを番位の底または基数といい、各桁の値を番位の仮数と言う。
代表的な位取り記数法である進法は
そろばんの二五進法は
時間を表す記数法は
もしくは時分秒をそれぞれ一桁とみなし日や年まで考えると
のような場合となっている。
私たちが普段使っている記数法が上手くいってるのは
というカラクリがあったんですね。
ちなみに負の方向にも
と伸ばして
と表すことで任意の有理数や実数まで表現することができます(仮数は)。
簡単な性質
仮数の決定
ある非負整数が与えられたときその進展開は次にようにして求められます。
まずから順に割り算をして行き、商と余りを求めます。
このときの進展開はとなります。
また一般の非負実数の小数部分については以下のように求められます。
まずから順に掛け算をして行き、整数部分と小数部分を求めます。
このときの進展開はとなります。
四則演算
足し算引き算については進法の場合とやることは変わりません。足し算
はと(と繰り上がり)の和が未満のとき
とし、以上のとき一桁繰り上がって
とするだけです(引き算についても同様)。
掛け算割り算についてはおそらく特に一般的な方法がなく、かなり煩雑なことになります。せめて任意のにあるが存在してのような関係が成り立ってくれているとある程度の定式化はできそうですが、おまけとして示すようにそのような性質を持つものは進法(に類似するもの)のみに限られることがわかるのでどうしようもないです。
約数判定
進法ではある数がやで割り切れるか調べるには下桁がやで割り切れるかどうかを確かめればよい、という約数判定がありました。
これは一般の進法でも似たようなことができます。と言っても至極単純なことで、ある数がで割り切れるか調べるには下桁がで割り切れるかどうかを確かめればよい、という話です。漸化式が成り立っているので当然と言えば当然ですね。ついでに言うと合同式
が言えます。
階乗進法と問題点
というわけで進じゃない記数法を考えてみましょう。とりあえずとした階乗進法
なんてものを考えたくなります。階乗進法では一桁増えるごとに階乗の速さで大きくなるので、十分に大きい同じ数を表すのに指数関数の速さで大きくなる進法より少ない桁数で済みます。ただ桁程度の進数だったら階乗進法で表すより進法で表した方が少ない桁数で済むのでよっぽど大きい数じゃない限り実用性は低そうです。
(桁桁)
(桁桁)
(桁桁)
小数展開
階乗進法は小数展開に少し面白い性質があります。
進法においては大抵の無理数に対し、それが恣意的に作られたものでなければ、その小数展開に目に見えた規則性はありませんが、階乗進法においては規則性が見られる場合があります。
このように整数係数なマクローリン展開を持つ関数の特殊値といった限られた場合くらいにしかこのような性質は見られませんが、ネイピア数のような馴染み深い超越数がこのような規則的な小数展開を持つのは中々面白いですね。
問題点
ただ階乗進法には実用的にちょっと問題があります。上でもしれっととかとか出てきたように上や下に桁以上伸びる数を表現するにはからまでの数字だけでは足りなくなってしまいます。そこで進法などでも使われているようにの先にと延長することでからまでの仮数を一桁で表すことができますが、それでも上や下に桁以上伸びる数を表現するには足りません。そう、階乗進数では桁目の仮数は個必要なのですべての自然数に対してなんらかの記号を割り当てないといけないのです。
じゃあ二桁以上使って仮数を表わせばいいじゃんとなりますが、進法で表すにしても
のようになりますし、階乗進法で表すにしても
のようにかなりわかりづらい見た目になってしまいます。
このように仮数が無限に必要になる問題を防ぐにはが有限である必要があり、特に仮数を進法で表したとき二桁以上になってしまう問題を防ぐにはである必要があります。を固定したとき、を満たすような記数法のうち、桁数の増加に伴う発散速度が一番大きいもの(任意の数を表すのに一番桁数が少なくて済むもの)は進法()となるのでそういう意味で進法は最も理に適った記数法であると言えます。
まとめ
進法は掛け算割り算が定式的に計算可能で、仮数が有限である記数法のうち実用的に最も理に適った記数法なので、いくら未知の文化を発展させた宇宙人が飛来してきても記数法は進法に則ったものを使っている可能性が高いですね(ローマ数字のようなものを使っていない限り)。
進法最強!進法最強!
おまけ
掛け算の法則と進数
一般の位取り記数法における掛け算割り算について「任意のにに対しあるが存在してのような関係が成り立つものは進法(に類似するもの)のみに限られることがわかる」といったことを言いましたが、ここではそのことについて解説していきます。
は単調増加なのでならばが成り立つことを利用すると次のようにして
すなわちこれは進法()であることが言えます。
であること
が成り立つとする(のときは明らか)。
このとき
なるを取ると、よりつまり
でなければならないのでを得る。
であること
が成り立つとする(のときは明らか)。
このとき
なるを取ると、よりつまり
でなければならないのでを得る。
整数の掛け算がしやすい記数法
さて数学的帰納法によりがわかりましたが、これは前提としてという関係式においてが負の値を取ることを許しています。
ではが非負のときのみを考えるとどうなるでしょうか。
結論から言うと以下のような命題が成り立ちます。
に対しあるが存在しが成り立つことと、以下の二条件が成り立つことは同値である。
- はある自然数のべきとして表せる。
- 任意のに対してあるが存在しが成り立つ。
このように結局進法に類似した記数法となるわけです。
ちなみにこのようなに対して集合
はと和について閉じており、またと加法単位元も持っているのでこれはモノイドと呼ばれる集合の一つとなります。特に非負整数の部分モノイドであるので自然数モノイド(numerical monoid)と呼ばれます。詳しくは
英語版Wikipedia
を見てください。
また先に示したようにが負のときにも(ただしならば)が成り立ち、という関係があるならばが成り立つのでしたが、これは有理整数環の(加法についての)部分モノイドで負の数と正の数を同時に含むようなものはの(単項)イデアルであるということを示唆しています。
とおく。このとき
や
が成り立つことに注意する。
の一定性
いまから
が成り立つのでと素因数分解すると
と有界であり、したがってはあるから先で一定とならなければならない。
またの等号成立条件からにおいて
が成り立つこともわかる。
の一定性
いまにおいて
とおくとやが成り立つ。特に
はに依らず一定となるのでその値をとおく。
ここでよりとなることに注意すると、あるが存在して
が成り立つ。このときとすると(のときは明らか)
より
つまりとなることがわかるので、数学的帰納法により
を得る。
結論
特に
が成り立つのでこれをとおくとあるより先において
が成り立つことがわかり、また任意のおよびに対しとおくと
が成り立つので
と表せることが示された。
我ながらこんな証明よく考えたなーと思います。
まあとにかく進法ってよくできてるんだなーって思いました。
階乗進法のレピュニット
何かありそうと思いましたが特に何もなさそうでした。進数のレピュニットが
にを代入したものだったのに対して階乗進数のレピュニットは
にを代入したものとみなせます(は上昇階乗)。
うーん。