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
以上