ようこそNICのホームページへ(なが〜い試運転中)   
HP パソコン 健康 落語 海外 思うまま 電子工作

素数の積で回文数となるパターンに波がある

Last update:2018/03/07    Build:2018/03/02



素数の積が回文数となる へ  cpuを有効に使う、fortranでの並列処理の時間比較、openmpを使う へ 

 

偶然 10万番目までの素数が記されたファイル を見つけた。

何の目的もなく、10万番目までの素数を見たくなりダウンロード(excel形式)した。 ふと素数と素数を掛けて回文(「たけやぶやけた」のように上から読んでも下から読んでも同じになる)に なるような数字があるかなと思った。 エクセルの表でデータが掲載されていたので、VBAで計算して、判断し、出力するマクロを作った。 この途中に「回文数」という言葉を知った。回文の数字版ですね。

出力フォーマットは表−1のように ○個目の回文数 素数のm番目 m番目の素数の値 素数のn番目 n番目の素数の値 素数の積で回文数となった値 です。

表−1 素数の積が回文数となる場合 出力フォーマット
素数1 素数2 かけ算結果 回文数
番目 素数 桁数 番目 素数 桁数 回文数 桁数
1 1 2 1 1 2 1 4 1
2 1 2 1 2 3 1 6 1
3 1 2 1 5 11 2 22 2
4 1 2 1 26 101 3 202 3
5 1 2 1 32 131 3 262 3
6 1 2 1 49 227 3 454 3
7 1 2 1 65 313 3 626 3


ビジュアルベーシックで7万番目の素数の積までで、回文数となる場合をチェックした。表−2に示す。

表−2 素数の積が回文数となる場合 7万番目の素数までチェック
N番目の素数まで 3,000 10,000 20,000 30,000 70,000
回文となる組み合わせの数 1,064 2,937 5,362 8,066 15,668
mの最後 2,942 9,822 17,664 27,135 27,135
nの最後 2,960 9,978 17,672 27,193 27,193


これを眺めていると、3万番目と7万番目の最後の素数の番号が同じである。計算間違いかなと当初思った。 確認してエラーはなさそうである。そうすると出現に特徴があるのかと思い出した。

そこで回文数となる素数の積の元になった素数のm番目とn番目をグラフ上にプロットしてみた。 図−1がその図です。(m<=n)



図−1 3000番目までの素数の積が回文数となる場合



同様に1万番目までの素数の積が回文数となるパターンを図−2に示す。



図−2 10000番目までの素数の積が回文数となる場合


双曲線的に出現する、明らかに出現パターンに波がある。数を大きくしても同じだろうか? 調べてみることにした。 ビジュアルベーシックで10万番目までの素数の積をチェックしたが、15時間余りかかった。 そこでフォートランで4coreを有効に使う方法を考えた。 別ページを 参照してください。

20万番目までの素数の積で回文数となる(m、n)をプロットした。やはり双曲線的になる。 もちろん十進数での回文数なので「素数」そのものの特徴とは言えないが、面白い。



図−3  20万番目までの素数の積が回文数となる場合

興味のある人はやってみて下さい。 ○番目の素数でプロットするのではなく、素数の値そのものでプロットするとどうなるかもある。

素数20万番目までチェックした時の、最後の数行の回文数を乗せます。

表−3 20万番目までチェックした最後の回文数
素数1 素数2 かけ算結果 回文数
番目 素数 桁数 番目 素数 桁数 回文数 桁数
41803 197592 2713967 7 198764 2731541 7 7413312133147 13
41804 197805 2717089 7 199759 2746423 7 7462275722647 13
41805 197861 2717833 7 199593 2743859 7 7457350537547 13
41806 198628 2729437 7 199812 2747231 7 7498393938947 13
41807 199279 2739409 7 199970 2749573 7 7532205022357 13




(2018/03/07 追記)


覚悟を決めて40万番目までの素数の積で回文数となる(m、n)をプロットした。全く同じ傾向。 20万番目から40万番目は、回文数となる組み合わせがあまり出てこない。



図−4  40万番目までの素数の積が回文数となる場合

素数40万番目までチェックした時の、最後の数行の回文数を乗せます。

表−4 40万番目までチェックした最後の回文数
素数1 素数2 かけ算結果 回文数
番目 素数 桁数 番目 素数 桁数 回文数 桁数
83945 226156 3139727 7 227166 3154637 7 9904698964099 13
83946 226712 3148231 7 228418 3173329 7 9990372730999 13
83947 226734 3148517 7 227274 3156347 7 9937812187399 13
83948 226817 3149803 7 227393 3158033 7 9947181817499 13
83949 227280 3156427 7 227966 3166637 7 9995258525999 13

(2018/03/07 追記ここまで)




素数の積が回文数となる へ  cpuを有効に使う、fortranでの並列処理の時間比較、openmpを使う へ 

電子工作へ     HomePage     このページのトップ