-
自守數
鎖定
自守數,亦稱同構數,是指一個數的平方的尾數等於該數自身的自然數。在十進制中,0, 1, 5, 6, 25, 76, 376, 625, 9376, 90625, 109376, 890625, 2890625, 7109376, 12890625, 87109376, 212890625, 787109376, 1787109376, ... 都是自守數
[1]
。
- 中文名
- 自守數
- 外文名
- Automorphic Number
- 別 名
- 同構數
- 代表數字
- 5, 6, 25
- 其他名詞
- 平凡自守數
- 意 思
- 某數平方末尾幾位數等這個數的數
自守數簡介
定義:自然數
稱為
-進制下的自守數當且僅當
能被
整除,其中
. 取
時即為此自守數的定義。
注意:當
為素數時,只有平凡自守數。
顯然,
和
是一位自守數(
)
自守數有一個特性,以他為後幾位的兩個數相乘,乘積的後幾位仍是這個自守數。因為5是自守數,所以以
為個位數的兩個數相乘,乘積的個位仍然是
;
是自守數,所以以
為後兩位數的兩個數相乘,其結果的後兩位仍是
,如
。
三位自守數是
和
,四位自守數是
和
,五位自守數是
和
......
我們可以看到,
位的自守數出自
位的自守數。由此得出,如果知道
位的自守數
,那麼
位的自守數應當由
前面加上一個數構成。(僅對
的素因子個數為
時適用)
實際上,簡化一下,還能發現如下規律:
......
定理(自守數的對稱性):設
為非平凡自守數,
為最小的使得
的數,則
是自守數
證明:觀察易發現,因為
,則
,我們取模
的同餘,有
,最後一個同餘號成立是因為
為自守數
註記:其實對於平凡情形,這個定理也成立,如
是自守數,則
也是自守數。
定理:設
的不同的素因子個數為
,則大於
小於
的自守數的個數為
個
推論,
時,
位數的自守數有且只有兩個,二者它們的和等於
所以,兩個
位自守數,他們的和等於
.
自守數編程計算
JAVA
實現:
public class ZishouNumber { public static void main(String[] args) { for(int i = 1; i < 10000; i++){ String strI = String.valueOf(i); String multiStr = String.valueOf(i*i); String last = multiStr.substring(multiStr.length() - strI.length()); if(last.equals(strI)){ System.out.println(i + "*" + i + "=" + multiStr + "--> " + i + " is Zishoushu"); } } } }
--------------------------
1*1=1--> 1 is Zishoushu 5*5=25--> 5 is Zishoushu 6*6=36--> 6 is Zishoushu 25*25=625--> 25 is Zishoushu 76*76=5776--> 76 is Zishoushu 376*376=141376--> 376 is Zishoushu 625*625=390625--> 625 is Zishoushu 9376*9376=87909376--> 9376 is Zishoushu
c++的實現
#include<iostream.h> class Self { private: int a[20]; int m,n,p; public: Self(int _m,int _n) { m=_m;n=_n; } void process() { int pf; int j=0; p=0; for(int i=m;i<=n;i++) { int k=i; pf=k*k; while(k!=0) { if((pf%10)!=(k%10))break; k=k/10; pf=pf/10; } if(k==0) { a[j]=i; p++; j++; } } } void print() { cout<<"自守數的個數為:"<<p<<endl; for(int j=0;j<p;j++) cout<<a[j]<<'\t'; cout<<endl; } }; void main() { Self test(1,110); test.process(); test.print(); }
Python的實現
while True: try: n=int(input()) for i in range(1+n): if str(i)==str(i**2)[-len(str(i):]: print(str(i)) except: break
- 參考資料
-
- 1. A003226 - OEIS .OEIS[引用日期2021-07-27]