FLYING

/* TODO: 気の利いた説明を書く */

多倍長整数は無限への入口

多倍長整数というものに触れることは、無限を感じるひとつの方法だと思った。もちろん、実際にはメモリとか計算時間とかの問題で、現実的な限界はある。それでも、理論的には無限を表せる──たとえ理論という建前の上であっても、無限の可能性は間違いなくそこに存在している。それがとても魅力的に思えた。

しかし、実装していくうちに疑問が湧いてきた。本当に多倍長整数は無限なのか?

多倍長整数の考え方は、要するに「1つの整数型はそんなに大きな数は表せないけど、小さな整数型をたくさん寄せ集めれば無限大きな数を表せるんじゃね?」という安易な発想から生まれてる。

しかし、例えば今回の実装だったら、プログラムの中で何度も多倍長数のサイズが変数に代入され、利用される。したがって、多倍長数のサイズは変数で表せる数の限界を越えられない。つまり、表現できる値にははっきりとした限界があり、無限にはなりえないのだ。

他の実装方法として、数字がでっかくなったらその度にreallocして、大きい数を扱えるようにする方法もあるけど、それにしたって、桁数を何がしかの変数に放りこんでやる必要がでてくるはずだ。どんなやり方にしても、多倍長数のサイズを普通の変数で表そうとした時点で、その多倍長数は有限になってしまうのだ。

結論。コンピュータで無限の整数を表現するのは無理じゃね?