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

2020-05-22 16:00:35来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

從水仙花數引出自冪數,并做簡單的介紹,并不做深入的了解,同時使用C++代碼初略的實現9位數之內的自冪數輸出!

0-簡介:

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

1-定義:

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

  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>
using namespace std;
int main(int argc, char const *argv[])
{
    // digits: 位寬,每一個數的位數
    for (int digits = 3; digits < 10; digits++)
    {
        // next:被測試的數字
        for (int next = pow(10, digits - 1); next < pow(10, digits) - 1; next++)
        {
            int temp = next; // temp: 臨時變量,用來保護原數據next不被破壞(改變)影響下一次的循環
            int sum = 0;     // 每個數位上的數字次方和
            while (temp > 0)
            {
                sum += pow((temp % 10), digits);
                temp /= 10// 由於temp為int類型,所以除以10之後會自動截去小數部分(是截去,不是四捨五入)
            }
            if (sum == next)
            {
                // 判斷是否滿足條件
                cout << next << endl;
            }
        }
    }
    return 0;
}

 

說明:

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

 


原文链接:https://www.cnblogs.com/ltozvxe/p/12934776.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:分享一个自己项目中用到的c++版的日志类(对初学者十分有用的,有

下一篇:C++ new初始化与定位new运算符