2021年6月20日日曜日

Automorphic number、自己同型数、自守数、Circular number

平方すると下位の数字のならびが元の数と同じという数で、日本語では自己同型数という。日本語で自己同型と言われるとわかりにくいような気にもあるが、Automorphic の訳となっている。

ちなみに、中国語では「自守数」。

英語版 Wikipedia にある別名、Circular number の方が数字の並びをあらわしている。

用語はともかく、プログラムを書いて実際 0 からはじめて1つずつ順に大きな桁まで計算するとなかなかこれは実行時間がかかった。

単純なプログラムで、なんとか風呂に入ってる間くらいで計算できたのは、

0  Automorphic
1  Automorphic
5  Automorphic
6  Automorphic
25  Automorphic
76  Automorphic
376  Automorphic
625  Automorphic
9376  Automorphic
90625  Automorphic
109376  Automorphic
890625  Automorphic
2890625  Automorphic
7109376  Automorphic
12890625  Automorphic
87109376  Automorphic
212890625  Automorphic

このくらいまでだった。

実際にたしかめると、212890625 * 212890625 = 45322418212890625 。

上の計算は、Frink の文字列処理関数を判定に使った。if と String 関数だけで書くと次のようなる。

n = 0
do {

        if   substringLen[toString[n*n],  length[toString[n*n]] - length[toString[n]], length[toString[n]]] == toString[n] 
        {
                println["$n  Automorphic"]
        }
} while  n <= 1000000000

212890625 の次の自己同型数は、風呂からでてアイスコーヒーを飲みおわってもまだ出てこなかった。苦笑

この例は 10進数の場合である。
10進数のときの下位のけたの特徴はすぐわかる。この特徴を証明できれば、大きなけたまでの計算が少し時間短縮される。しかし無限にあることもわかる。

OEIS A003226  など参照。

Automorphic number については、Rec Math の半世紀くらい前の記事も参考になる。マーチン・ガードナーとかをよく読んでいた頃に購読していたが、全部処分してしまって部屋にはなくなってた。残念。



0 件のコメント:

コメントを投稿

グラスホッパー

庭のこの葉っぱに住みついてるバッタ達。   上の2つの写真の翌日のこと、なんと二組がおんぶして登場