從水仙花數到自戀數-01-自戀數的初識

0
17

0-簡介:

在數論中,水仙花數(Narcissistic number,也被稱為超完全數字不變數(pluperfect digital invariant,PPDI),自戀數,自冪數,阿姆斯壯數或阿姆斯特朗數(Armstrong number)用來描述一個N位非負整數,其各位數字的N次方和等於該數本身.

1-定義:

設有自然數n,d為該自然數各位數字,即n=dkdk-1d1,則有:

  n=dk·10k-1+dk-1·10k-2+…+d2·10+d1,

如果該自然數n滿足條件:

  n=dkk+dk-1k+…+d2k+d1k.

則這個自然數就被稱為超完全數字不變數。

若將條件放寬,一個N位數,其各個數之M次方和等於該數,M和N不一定相等,這樣的數稱為完全數字不變數

水仙花數一定是完全數字不變數,但完全數字不變數不一定是水仙花數。 嚴格意義來說水仙花數指三位數.

補充說明:

  在百度百科中,不同位數的自冪數擁有不同的稱呼,但是這個稱呼應該是只有中國才有的這個叫法,不信你看這些名字有哪一個是國際化的:

    一位自冪數:獨身數
    兩位自冪數:沒有
    三位自冪數:水仙花數
    四位自冪數:四葉玫瑰數
    五位自冪數:五角星數
    六位自冪數:六合數
    七位自冪數:北斗七星數
    八位自冪數:八仙數
    九位自冪數:九九重陽數
    十位自冪數:十全十美數

  我甚至懷疑是不是網友或者寫百度百科的人自己瞎取的.

2-“八卦”:

我們要說的八卦當然是關於自冪數的八卦:

1.十進位的自冪數一共89個,其中最大的有39位:115,132,219,018,763,992,565,095,597,973,971,522,401;

2.十二進制的完美數: 25, A5, 577, 668, A83, 14765, 938A4;

3.三進位中的這樣的數有:0、1、2、12、122;

4.四進位中的這樣的數有:0、1、2、3、313;

5.任何進制之下1-9都是自冪數

6.更多關於自戀數的信息可以查看OIES-A005188

3-代碼實現(基於C++):

// C++代碼實現:
#include<iostream>
#include<cmath>
usingnamespacestd;
intmain(intargc,charconst*argv[])
{
//digits:位寬,每一個數的位數
for(intdigits=3;digits<10;digits++)
{
//next:被測試的數字
for(intnext=pow(10,digits-1);next<pow(10,digits)-1;next++)
{
inttemp=next;//temp:臨時變量,用來保護原數據next不被破壞(改變)影響下一次的循環
intsum=0;//每個數位上的數字次方和
while(temp>0)
{
sum+=pow((temp%10),digits);
temp/=10;//由於temp為int類型,所以除以10之後會自動截去小數部分(是截去,不是四捨五入)
}
if(sum==next)
{
//判斷是否滿足條件
cout<<next<<endl;
}
}
}
return0;
}

說明:

這裡的代碼只是簡單的實現了查找并輸出9位數以內的自冪數,尚未對程序進行優化(不管是算法上還是代碼格式,命名規範等方面均是如此);其優化我會放在後面的文章之中.屆時除了代碼的優化還有關於自冪數更多的事情.因為這個分類的重點本來就不是在於代碼,而是在於學習和進步.

<

发布回复

请输入评论!
请输入你的名字