18/07/23 11:00:35.89 jaHqJHEC.net
コラッツ操作が最大値に達するまでのステップ数を m とし、
最大値から 1 に達するまでのステップ数を n とすると、
コラッツ予想が正しいかぎりにおいて、m + n は最大値を
超えない(鳩小屋の定理により、同じ数が二度出てしまうので、
どこかでループしてしまう)。
で、実験的には、最大値が初期値の二乗を超えないならば、
初期値が収まるビット数の倍のビット数の作業領域を用意すれば、
オーバーフローしないということが謂える。
符号つきの 8 ビット整数と 16 ビット整数を考えると、
自然数として使える領域は 7 ビットと 15 ビット。
で、オーバーフローが起きるかどうか、という話。
31 とか 127 とかだったら、ひょっとしたらダメかも
しれない。じゃあ、16 bit int と 32 bit int はどうか。
32 bit int と 64 bit int だったらどうか。
そういう試行錯誤の結果として、「n が十分に大きいときは、
作業領域を倍に取っておけば、(たぶん)例外は出ないか、
あってもかなり少ない」「ヤバそうだったら、出発値の何割増か
取っときゃいい」という話をしているんじゃないかと思うんだけど。
なんか、規制を喰らっちゃったんで、このスレからは遠ざかるけど
ゴメンナサイ m(_ _)m。
いま、自分のところにサーバー立てるんで忙しいのよね。