■■C++で大きな数を作るスレ■■
■ このスレッドは過去ログ倉庫に格納されています
0493デフォルトの名無しさん
2010/07/22(木) 23:39:05大きさが見積もれました。
●1回のループでのxの増加分
最大プログラム長をn命令とする。
1回のループで x が f(x, n) になるとする。
>>488 の通り、xステップでの戻り値は 4095*pow(2,x-1)以下なので、
f(x, n) ≦ 4095*pow(2,x-1) ≦ pow(4095, x)
●ループ回数
最大プログラム長をn命令とした時のループ回数を g(n) とする。
n命令以下のプログラムは
pow(0x10000000, 1) + pow(0x10000000, 2) + ... + pow(0x10000000, n)
通りである為、
g(n) ≦ pow(0x10000000, 1) + pow(0x10000000, 2) + ... + pow(0x10000000, n) < pow(0x10000001, n)
●戻り値
xの初期値に対し、f(x, n) を g(n)回繰り返した値以下である。
上記より、大きく見積もっても、
4095↑↑(0x10000001↑[最大プログラム長(命令数)]) 程度であることが分かる。
※↑はべき乗、 ↑↑ はテトレーション
■ このスレッドは過去ログ倉庫に格納されています