φ(N)とψないし@(剰余数列周期)のGCM(φ, @)を見てみたい.φ(N)と#(循環節周期)のGCM(φ, #)は#と完全一致することが確認されているので,それと比較するというのが動機だ.@はResidueFuncで計算されているので,そこで出力できるだろう.テキストボックス名はTextBox15だ.ResidueFuncを呼び出しているResidueFuncProというラッパがある.どちらを使ったらよいか?
ResidueFuncを使えば抜け目なくすべての場合に出力される.ResidueFuncProを呼び出しているのは,ValueChangedPro,modulo3.Click,GoButton,TestMatrixの4箇所だけだ.ただし,これら以外の場所ではValueChangedProが呼ばれているので,実質的な効果は同じなのではないか?@を出力しているのはResidueFuncProなので,ここが適切だろう.いや,ResidueFuncProではφにアクセスできない.やはり,ResidueFuncを使うしかない.
いや,ResidueFuncはφ(N)を持っていない.ただし,ResidueFuncが呼び出しているPsiFunctionでは内部でφ(K)を使っている.GCM(φ(N), @)ではなく,GCM(φ(K), @)なのではないか?しばらく,実験的にResidueFuncProの中で両方を計算して比較してみることにしよう.TextBox15とTextBox3だ.⇒やはり,GCM(φ(K), @)の方だ.こちらなら100%一致する.Build Matrix は外部にテーブルを1個表示するというのが本旨なので,画面上のパラメータは不変としてよいのではないだろうか?⇒TestMatrixで画面を更新している.⇒対処した.
そう言えば,「素数積」という話もあったが,どうなっているのだろう?素数積というのは以下のような話だ.
「べき乗の剰余数列で①nとkが互いに素の場合には,落伍項は生じない.②kが素数の単純な積である場合にも落伍項は生じない,③kの素因数がべきになっている場合には落伍項が生じる.」
確かに言えているようにも思われるが,それほど単純な話ではない.kの素因数にべきが含まれている場合でも,ドロップする場合としない場合がある.(N, K)=1の場合は確実にそうなるが,.(N, K)=Kの場合もドロップは発生しない.というか剰余がゼロになって,周期1になる.(N, K)の中にべきがある場合でも,ドロップする場合としない場合がある.たとえば,N=32, K=24で(N, K)=8では{8, 16}のように@=2でドロップなしだ.N=34, K=24のときは(N, K)=2で{10*,4*,16,16}のようにドロップ2が発生する.
Seed TestとResidue Testは合併してもよいのではないか?そもそも,Seed Testと言っているものの趣旨がよく分からない.Seed TestではInvertFuncを実行している.Residue TestではResidueFuncを実行しているので,やっていることは真逆だ.Prime Test ではBを変化させながら,InvertFuncを実施している.これはInvert Testと基本的に同じだ.ただし,Prime Test ではDivideRepunitというのを実行し,さらに,計算結果を解析してマーク付けを行っている.Invert Testでは,DispInvertとDispRecurringDecimalを実行して循環節を表示している.PrimeTestとInvertTestは合併してもよさそうな気がする.
▲循環節の固定部の切り出しが間違っている.n=7のとき,1/7=0.142857142857だから,固定部[0],循環部[6]{142857}でなくてはならないが,固定部[1]となっている.