φからkを推定することは可能だが…

循環節の周期をkとして,kがφの約数であることは確かなので,φからkを推定することは可能だが,一意に決定する決め手が見つからない.ResidueFuncは「対象数nのべき乗の k による剰余を計算し剰余列の周期を返す」関数なので,剰余周期からなにか言えるのではないかと思ったのだが難しい.ResidueFuncは対象数nと除数kからnのべき乗剰余の周期列を返すようになっているが,kを固定した場合にはほとんど同じ値が返ってくる.つまり,n^bとb^nの区別が付かない.ResidueFuncは時間を消費する関数なので暫定的に探索範囲を2kからkに削減して動作させているが,いまのところ特に問題は起きていないようだ.

n=123456789でb=63のとき,InvertFuncの出口で停止した.fixedとkがともにゼロになっている.これは検定に失敗したことを意味する.途中まではfixed=1 k=17664 keta=17665で来ているのだが… いや,出口までその値がキープされている.MakeDecimalStringもこの値で処理されている.どうも,なにか割り込みが入ってしまったような気配だ.nestcountは1だ.処理中に画面上のパラメータを操作してしまったのではない?処理中はあらゆる入力を禁止するようにするしかない.⇒修正したが,まだ現象は起きる.⇒共有出口ですでにその値になっている.ループカウントオーバーしているためと思われる.

ループカウント上限が32767になっている.これは,FindCycleLengthでk値を決定できることを当て込んだ措置なので,その支援がなければ解けないということを意味する.⇒バッファサイズを倍量にしてエラーは回避できるようになった.⇒いや,変化していない.

▲InvertFunc初期化完了の当たりでカーソルがデフォルトに戻ってしまう.どこかで強制的にデフォルトに設定しているのではないか?⇒ValueChangedでカーソルを設定するようにして解決した.⇒いや,解決していない.この2回目のInvertFuncはどこから起動されているのだろう?⇒初期化完了のところで改めてカーソルを設定するようにした.⇒それでも効かない!初期化完了のところで「ボァン」のような警告音が出るのはなぜだろう?無効な値が入力されたときのような音だ.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA