プーチンの夢を見てしまった

またプーチンの夢を見てしまった.これで三度目だ.前の二篇はかなり苦しそうな様子だっが,今回のは結構おもしろかった.大学構内のような雰囲気の路上で出会い,声を掛けたら付いてきたので一緒に喫茶店に入った.わたしは何か数学上のプロジェクトを抱えているみたいで海外から届いた分厚い論文を若い連中と輪読することになっていた.プーチンは前に座っていた若い学生に何か謎掛けのようなことを問いかけ,彼がうまく答えられなかったので「こいつはダメだ」みたいにつぶやいた.彼がわたしの隣に座っていた肥満女性の腰に手を回して踊るフリをすると周りから「プーチンはもてるんだよね~」などの声が漏れた.

画面は大体固まったのではないかと思う.あと追加すべき情報としては,φの約数数列とべき剰余数列がある.φの約数はψや循環小数の桁に関係する.GCM(φ,循環節桁)は循環節桁と一致すると予想されている.ψはB進数表記には直接関わりはないが,べき剰余数列の桁には関わりがあるはずだ.ともかく,値を出力してみよう.以前はφの約数の代わりにN-1の約数を出そうとしていた形跡があるが,Nが素数の場合にはφ=N-1となるので,φの約数とした方が適切であると思われる.φの約数はφを計算するところで計算できるだろう.ただし,φ数は必ずしも対象がNとは限らないので,その切り分けが必要になる.一般の場合にはPhi()の代わりにTotientFuncを呼び出すようにしておこう.

というか,DispParametorで更新するだけで十分なのではないか?DispParametorはValueChangedから呼び出されているので,脱落はないはずだ.いや,これはGCM(φ,#)に関係しているので,その位置で更新すべきではないだろうか?GCM(φ,#)はTextBox6に書き込まれる.これを行っているのは,ValueChanged→DispParametor2だ.ただし,DispParametor2ではφ(N)は扱っていない.ValueChangedには,φの約数を格納するTextBox2に書き込みしている論理が存在する.これは既存論理でN-1の約数を書き込んでいるところだ.これをφに書き換えればそのまま通用すると思われる.⇒書き換えた.

循環節桁数#はゼロになる場合がある.このとき,gcm(φ,#)=φとなっているのだが,これでよいのだろうか?gcm(x,0)=xという定義になっていたような気はするが…我々の定義では,0は公約数とはなり得ない.なぜなら0で除することはできないからだ.このため,関数GCM()ではゼロが返るようになっている.この点は一貫すべきと思われるので,最大公約数を求めているすべての箇所でGCM()を呼び出すように書き換えておく必要がある.⇒BigInteger.GreatestCommonDivisorをGCMに一括変換しておこう.これで,gcm(φ,#)=#が言えるようになる.※⇒「なぜなら0で除することはできない」というのは論理的に少し弱いので,この件は保留とする

最後はPowMod Cycleだ.この値はResidueFuncでデバッグコンソールに出力していたはずだ.この値を書き込む場所はTextBox14だ.numstrをそのまま書き込むようにした.

剰余計算の表示がかなりおかしい.計算がまったく合っていない.どこか壊してしまったような気配だ.⇒再現しなくなってしまった.⇒指数が入っていた可能性は考えられる…

Kの素数インジケータがおかしい.PrimeKという名前が付いたチェックボックスだ.⇒テキストボックスを数値ボックスに変えたのに,テキストから読み出しているためだ.num0,pow, Bもチェックした方がよい.⇒すべて点検した.問題なさそうだ.

Nのφ数と循環節の桁数のGCMを表示しているが,φとψのGCMも出してみたい.原始根ではψはφを割り切ることになっていたはずだが,一般の場合にも公約数というのはあるはずだ.(φ, #)と#は完全に一致している.同様にψと剰余数列の周期@は(原則的に)完全一致する.

コメントを残す

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

CAPTCHA