水仙花演算法(阿姆斯特朗數)

2022-07-09 10:36:15 字數 862 閱讀 8205

什麼是水仙花數

水仙花數也被稱為超完全數字不變數、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數,嚴格的定義水仙花數,是指乙個 3 位數,它的每個位上的數字的 3次冪之和等於它本身。如371 = 3^3 + 7^3+ 1^3,則371是乙個水仙花數。

python中的求解思路

根據水仙花數的定義,可以理出下面的程式設計思路:

1. 新建乙個空列表x,用以儲存所有的水仙花數

2. 在for迴圈中,對100-999之間的任意乙個整數i,逐個分解出其個位數a、十位數b和百位數c,比較a、b、c三個數字的3次冪之和是否等於i本身,若等於,則將i新增到列表x中

3. 最後輸出的x即為求解的所有水仙花數

注意,在將乙個整數i分解出個位數a、十位數b和百位數c時,個位數a是i除以10後得到的餘數,百位數c是i除以100後得到的餘數,而十位數則是先將i整除10後得到整數部分,再將整數部分除以10後得到的餘數數即為十位數,上面**執行結果如下,得到所有的水仙花數為[153,370,371,407]:

**如下圖所示:

# coding=utf-8

x =

for i in range (100,10000):

a = i % 10 #個位數

b = (i / 10) % 10 #十位數

c = i / 100 #百位數

if(a**3 + b**3 + c**3) == i:

print(x)

#**優化

判斷輸入的數字是否為 水仙花數 或阿姆斯特朗數

水仙花數是指乙個n位數 n 3 它的每個位上的數字的n次冪之和等於它本身。注意此處若為四位數,則是4次方 例如 1 3 5 3 3 3 153 求輸入的數字是否為水仙花數。功能 判斷輸入nvalue 是否為水仙花數 輸入 nvalue為正整數 輸出 無 返回 如果輸入為水仙花數,返回1,否則返回0u...

趣味演算法 水仙花數

趣味演算法 水仙花數 乙個n位正整數 n 3 它的每個位上得數字的n次冪之和等於它本身。1 計算當前正整數的位數 2 計算每個位數上n次冪的和 3 判斷是否為水仙花數。include include include 0 the number is not narcissus number 1 the...

小演算法 水仙花數

水仙花數是指乙個 n 位數 n 3 它的每個位上的數字的 n 次冪之和等於它本身。例如 1 3 5 3 3 3 153 初步 int nmax 9999999 int nresult 9999 int ncount 0 for int i 0 i nmax i else if i 100 else ...