ψ数をn-1の約数から直接求めることができるようになった

ψ数をn-1の約数から直接求めることができるようになった.かなり,おもしろくなってきた.ただし,この方法が適用できるのはnが素数の場合に限定される.実際,13681では解けたが,13680は解けない.まず,ψが0になってしまう上,kを適用してもb^k=1 mod nが成立しない.この辺りの事情をもう少し詳しく知る必要がある.Psi=0になってしまうということはψの値が得られていないことを意味する.これはb^e≡1 mod nという数字が存在しないことを意味するのだろうか?それとも計算できなかったというだけなのか?

それほど大きな数でなければ,全数チェック可能なはずだから,試しておくべきだろう.⇒13680の場合は,やはり出て来ない.13679はもしかして素数なのではないだろうか?確かにそのようだ.13679は素数で,循環桁数は6839=ψとなっている.nとn-1はある種の相補的というか双対的な関係になっているような感じがする.

nとbが互いに素であることはψ数の定義の中に入っている.であるとすれば,bを素数に限定するということは意味があるかもしれない.64より小さい最初の素数は61なのでこれを使ってみよう.13680は61の倍数ではないので,GCMは1となるはずなのに,36という数字が表示されている.これはかなりおかしい.1231と3のGCMが1230と表示された.どこかで間違っている.

GCMの入っているテキストボックスはTextBox6だ.リネームしてgcmtextとしておこう.GCMは,①DispParametor2とDivisionで書き込まれている.DispParametor2ではφとkのGCMを計算し,Divisionでは引数のaとdのGCMを書き込んでいる.後者の場合は,aはnum0の値,dはdivisorの値であることを仮定している.DispParametor2でやっていることは,ψがφを割り切ることの確認のためと思われるが,GCMの値をここで書き換えるのは適切ではない.とりあえず,割り切れない場合は停止するように暫定修正した.

nとbが互いに素というのはψを計算する上での絶対条件のように思われる.どこかにこの値を常時表示しておく方がよい.ψの横に表示するようにした.ψの値が計算できないときには,テキストボックスの背景色を白抜きとしてテキストが抜けていることを強調するようにした.これでnとbのGCDが1とならない限り,ψが計算できないことがはっきりした.また,それ以外の場合は循環桁数=ψとなっていることも確認された.φと循環桁数は常時計算可能であり,かつψはφをつねに割り切るとなっているので,循環桁数がつねにφを割り切るかどうかも見ておきたい.φの因数分解を表示するか,ないしφと循環桁数のGCMを出しておくことにしよう.⇒(n,%), (φ, k), (n, b)の3GCMを並べて表示した.

b=1のとき,MakeDicimalStringで落ちる.小数コードの生成で後ろにMAXNUMSTRING=36文字分の糊代を作っているところで,MAXNUMSTRING – countが負になったため.⇒チェックしてゼロ以下の場合には実行しないようにした.

b=1というのはかなり特殊な場合で,ペアノの公理の後者関数のような形式になっている.このとき,b^ψ=1^1=1となり,いかなるnに対してもψ=1となると考えられるが,1進数の1/nは0.000…1 のような固定桁のみの数字になるため,k=0となり,ψと一致しない.gcd(n, b)=gcd(n, 1)=1でψが有効となるケースは基本的にψ=k=gcd(φ, k)になると考えられるが,b=1はそこでψ≠kとなる唯一のケースと考えられる.また,このとき,gcd(φ, k)=gcd(φ, 0)=φとなるため,三者がすべて異なる値を持つという特殊ケースになる.

かなりわかり易くなってきたのではないかと思う.k=0となるのは,nがbの約数になっている場合に限定されるのだろうか?

n=56033411, b=64でSeedTestボタンを押して例外発生.⇒OverFlowがどこかで発生している.算術演算のオーバーフローだ.SeedCheckでDim dmax As Integer = BigInteger.Log(k) / BigInteger.Log(2)が整数範囲を超えている.⇒kが0で,0の対数を計算しようとしていた.⇒対処した.

n=560330000, b=64でハングしてしまった.PSIを再探索で深掘りになっている.⇒一応抜けてきた.(n, b)=16でnとbは互いに素ではないため,ψは決定できないということらしい.(φ, k)とkはともに4250で一致している.つまり,(φ, k)=kはつねに成立するのではないだろうか?ただし,b^k≡1%nは成立しないので,それだけでkを決定することはできない.(n, b)≠1%nのときには,おそらくPSIの再探索というのは意味がないのではないかと思う.⇒再探索しないようにした.

コメントを残す

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

CAPTCHA