読者です 読者をやめる 読者になる 読者になる

素数遊び

11は素数です。101も素数です。ところが1001以上はそすうではありません。

   (,. a) ;q:a=:1}.1+10^i.22r1
 +----------------------+------------------------------------------------------------------------+
 |                    11| 11                  0            0           0     0    0      0      0|
 |                   101|101                  0            0           0     0    0      0      0|
 |                  1001|  7                 11           13           0     0    0      0      0|
 |                 10001| 73                137            0           0     0    0      0      0|
 |                100001| 11               9091            0           0     0    0      0      0|
 |               1000001|101               9901            0           0     0    0      0      0|
 |              10000001| 11             909091            0           0     0    0      0      0|
 |             100000001| 17            5882353            0           0     0    0      0      0|
 |            1000000001|  7                 11           13          19 52579    0      0      0|
 |           10000000001|101               3541        27961           0     0    0      0      0|
 |          100000000001| 11                 11           23        4093  8779    0      0      0|
 |         1000000000001| 73                137     99990001           0     0    0      0      0|
 |        10000000000001| 11                859   1058313049           0     0    0      0      0|
 |       100000000000001| 29                101          281   121499449     0    0      0      0|
 |      1000000000000001|  7                 11           13         211   241 2161   9091      0|
 |     10000000000000001|353                449          641        1409 69857    0      0      0|
 |    100000000000000001| 11                103         4013 21993833369     0    0      0      0|
 |   1000000000000000001|101               9901 999999000001           0     0    0      0      0|
 |  10000000000000000001| 11 909090909090909091            0           0     0    0      0      0|
 | 100000000000000000001| 73                137      1676321  5964848081     0    0      0      0|
 |1000000000000000000001|  7                  7           11          13   127 2689 459691 909091|
 +----------------------+------------------------------------------------------------------------+

解説:素因数分解する関数q:(キューコロン)は右側の引数を素因数分解してくれます。

   q:1001
7 11 13

これにより1001は7と11と13を掛けた数字であることがわかります。10001、100001と桁数を増やしていったらどだろうかと思いました。
素因数分解する関数q:(キューコロン)は右側にいくつでも引数を置くことができて、素因数分解した結果をマトリックスにして返してくれます。
与えた引数の数が行数になって、列数は素因数分解した結果で左右されます。上の例では11と101は素数なので、11と101がそのまま1列目に入っていて、その後の列はゼロで埋められています。


10を好きな数だけ掛けて1を足せば今回のパターンになります。上の表では}.(右ブレイスドット)を使って、2番目以降の結果だけを使っています。ちなみにそうしないと10のゼロ乗は1でそれに1を足した数字は2なので、2についての素因数分解を試みた行が一番上に現れて別に問題はないのですが、他の行は必ず末尾が1になる表なので気持ちが悪いので取りました。


横に並んだ数列を立て並びにする関数,.(コンマドット)を使って、あらかじめaに入れておいた数列を立て並びにして、その素因数分解した結果とボックスでならべています。


おもしろいですがあまり規則性のある結果になりませんでした。
9901と9091が素数なのはおもしろいですね。
999001と909091では、うまく行きません。999001の方が素数ではありません。

   q:999001
19 52579
   q:909091
909091


以上