晴れたので,布団を干しシーツを洗濯した

晴れてくれたので,布団を干してシーツを洗濯した.大物洗いはこれで大体完了だ.とりあえず,久留島喜内の道具箱は大体仕上がってのではないかと思う.出力ペーンに書き出している情報は未整理だが,ぼちぼち片付けることにする.ここまでできたら,一度リリースしてもよいのではないかと思うのだが… ともかく,ダンプをファイルに取ってざっとチェックしてみることにしよう.Matrix Testに少し時間が掛かり過ぎているような気もするが,ダンプの量が過大なのではないか?

saveボタンを押してエラーパネルが表示された.設定はデスクトップのtotient.txtに保存するようになっているが,そのようなフォルダは存在しないという.これはデフォルトパスをc:\desktopとしているためだろう.デスクトップは個別のユーザフォルダの中にあるので,ログインしないと場所を特定できない.EXEの置いてあるフォルダはアプリを起動すれば特定可能だが,場所はユーザによってまちまちであり,デフォルトにはなり得ない.⇒起動時は空のままとし,ロード時に登録がない場合にはEXEのフォルダを指定するというのでよいのではないか?

ResidueTestでは何も保存されていない.SeedTestは動作している.⇒書き込みはWriteStreamという関数でやっている.

Saveがオンの状態でファイルを削除すると,ファイルは削除されて,そのあと実行しても結果は保存されない.⇒いや,勘違いだと思う.設定はEXEのフォルダだった.デスクトップのファイルは無関係だから削除できる.開いているときには,ファイル削除でパネルが出る.

出力パネルへの出力とファイルへの書き込みを完全に同期させたので漏れの可能性はゼロになった.あとは検定結果の画面出力だけなのだが,いま一つもの足りない感じがあるので,もう少し遊んでみることにしよう.次のような項目が考えられる.①整数nがノントーシェントであるか否かの判定,②剰余を入力可能とし,逆算してnを決定する問題.どちらも結構難しそうな気はするが…

①に関しては以下のようなことが知られている.(1)1はノントーシェントではない,(2)1以外のすべての奇数はノントーシェントである,(3)ノントーシェントであるような偶数は無数にある,(4)ほとんどの数はノントーシェントである,(5)pを素数とするとp-1はノントーシェントではない,(6)2pがノントーシェントであることと,2p+1が合成数であることは同値である,(7)4p がノントーシェントであることと、2p + 1, 4p + 1 がともに合成数であることも同値である,(8) p − 1 で表される数はノントーシェントではない,(9) (p − 1)p の形で表される矩形数もノントーシェントではない,(10) p − 1 で表される異なる数同士の積もノントーシェントにはならない.

かなりのことは分かっているが,すべての偶数についてノントーシェントであるか否かを判定する手順は確立していない.分からないものについては,不明とするしかないのではないか?ノントーシェントであることが何か重大な意味を持ち得るのか否か?それとも特に意味もなく散乱しているだけなのかは調べてみなければ分からないのではないだろうか?その意味ではやってみるだけの価値はあるような気はするのだが…

②も難易度はかなり高そうな気はする.N^p=KQ+Rであるとして,これからNを逆算するとすれば,N=p√(KQ+R) R<K を解かなくてはならない.Kを固定し,pとQは任意でよいとしてもNを決定するのはかなり難しい.Kが素数であれば,0~K-1までの数がすべて剰余として現れるので問題は比較的簡単になる.同様にN^1なら同じことが言えるので必ず解を持つと言える.逆に言うと,N^{k+1}はN^1と同じ剰余を持つから同様の解を得られるが,これでは単純過ぎるような気がする.

ValueChangedを実行しても,剰余数列/ψ/#などが変化しない.どこかで止めているのではないか?⇒剰余数列はTextBox14に書き込まれる.これを書き込んでいるのは,DispResidueCycleとResidueFuncだ.どちらもsilentを見ているので,このフラグが落ちているのではないか?いや,動いている.リリース版を試しているのでバージョンが古かったのかもしれない.⇒いや,多分勘違いだと思う.φ(n)はnによって定まるが,ψ(n, K)はnとKのいずれかが変化したときの変化するので,べき数を変えただけでは変化しない.

ψがKを変えないと変化しないのは分かるが,べき乗を変えても周期が変わらないのはなぜだろう?これはおかしいような気がする.剰余周期と言っているのは,1/nの循環節ではなく,べきの周期なのだが… いや,これはべき乗を変えても変化しないというのが正しい.そもそも剰余周期というのは,べきが変化したときの剰余数列だ.従って,Nを変えれば当然変化する.これはマトリックスで行を切り替える操作に相当する.逆に言うと,Cycleというボックスに表示されているのは,マトリックスの行に他ならない.であるとすれば,べき数に対応した垂直の剰余列を表示するということも考えられるのではないか?⇒いや,それが欠けているとすれば,仕様的には片手落ちと言うべきだろう.

べき乗の九九表のタイトルにKの値を明示する.⇒対処した.

上の①,②に追加して,③nU/(B-1)を表示するということも考えられる.これは普通はレピュニット数になると考えられるが,そうならない場合もある.そうならない場合を調べる手がかりになるのではないか?もう一つの拡張として,Kの値に関わりなくテーブルを生成することが考えられる.つまり,テーブルを生成するKの大きさに制限を設けないという意味だが,テーブル全体を表示するのではなく,ある範囲,たとえば100×100くらいのテーブルを生成するのなら実用速度で表示できる.指定したNとべきがテーブルの中央に配置されるようにテーブルの範囲を決定すればよい.これはGoogle Earthがやっていることだ.これができるとほとんど制限なしで使うことができるようになるのではないか?理想型かもしれないが,追求してみたい.

ともかく,できるところからやってみることにしよう.③は簡単に実装できた.「べき乗の九九表のタイトルにKの値を明示」も片付けた.①のノントーシェントはとりあえず後回しということにして,べきに対応した縦数列を出すことを考えよう.テーブルが構成されていれば,それから拾い出すだけも作れるが,テーブルがつねに存在するという訳ではないし,また,その内容と設定が一致するとも限らないので,独自に計算を実施しなくてはならない.これはほぼ,PowerResidueFuncをもう一つ書くのに等しいが,やる必要があるだろう.後戻りできないように,先に出力ボックスを作っておこう.

さて,この数列を何と呼べばよいか?行方向の数列,つまりべき剰余数列は仮にcycleというラベルを付けているのだが,マトリックスの縦数列はまだあまりはっきりした位置付けが見えてこない.この数列にも周期性はある程度認められるのだが,大きな特徴はK番目のセル,つまりK行目のセルはすべてゼロになるという点だ.この横一列のゼロというのは,素数の場合はK行にしか現れないが,合成数の場合には(おそらく素因数のべきが入っている場合)中間にも入る場合があり,このゼロ線で周期になる場合もあり,ならない場合もある.

この縦数列で特徴的なのは,回文になる場合があるという点だ.これらのことを考慮すると,ここでは固定部:循環部という切り分けは難しいと考えられるので,とりあえず,K個の値をすべて表示するということにしておく.このような事情から,暫定的にこのボックスのラベルはgradationとすることにした.グラデーションの幅はKであり,そこに虹のように分解された色が見えるというイメージだ.いや,gradationではやや文学的過ぎるような気もする.stripeというのはどうだろう?この方が適切な気がする.この方が収まりもよいし,直感的だ.

一応動作するようになったが,どうもよく分からないところがある.stripeにもcycleとはまた違う種類の周期があるように見える.⇒原因は分かった.べきも剰余を取る必要がある.それもKではなくてK-1だ.このような操作を入れると始めてK-1の周期でstripeが循環するようになる.かなり複雑な(実は単純な)動作だ.かなりいろいろと面白いことが分かってきた.レピュニットはnUが不規則な形になっている場合でもほとんど完全なレピュニットになる.例外は末尾に0が付いている場合だけだ.⇒オプションでテーブルのサイズを指定できるようにしたい.ただし,そこまでやるとすれば部分マトリックスを出せるようにする必要があるだろう.φ(K)も表示しておく必要がある.⇒対処した.

コメントを残す

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

CAPTCHA