二、自冪數
水仙花數(narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, ppdi)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(armstrong number),水仙花數是指乙個 3 位數,它的每個位上的數字的 3 次冪之和等於它本身(例如:1 ^ 3 + 5 ^ 3+ 3 ^ 3 = 153)。顯然,為了判斷乙個三位數 n 是否是水仙花數,需要先得到它的個位、十位和百位。具體的方法有很多,這裡我通過 n 和10取模得到個位,n 除10再和10取模得到十位,n 除 100 得到百位。
得到個位十位百位後只需要判斷他們的立方和是否等於 n ,就能知道 n 是不是水仙花數。
這裡我們只判斷 num 是否是水仙花數。如果想判斷多個數字只需要乙個迴圈就可以解決,這裡不再多說。
#include
#include
intmain()
else
system
("pause");
return0;
}
在上面我已經提過了水仙花數是自冪數的一種,以下是自冪數的定義。
自冪數是指乙個 n 位數,它的每個位上的數字的 n 次冪之和等於它本身。(例如:當 n 為 3 時,有 1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153,153 即是 n 為 3 時的乙個自冪數)顯然,要求乙個數 num 是否是自冪數,就需要先判斷它的位數 n ,並把它的每一位取出來並判斷它們的 n 次冪之和是否等於 num 。在這些操作中,首先就需要得到位數 n ,並根據 n 來計算後續的冪值。自冪數包括:獨身數、水仙花數、四葉玫瑰數、五角星數、六合數、北斗七星數、八仙數、九九重陽數、十全十美數。
那麼,如何通過 n 來決定是使用幾次冪呢?在這裡,我使用了 if 語句來進行選擇1
。在實現中,我定義了陣列 num[n] 來儲存所求數的每一位,n 定義為 3 。我們也可以將 n 定義為更大的數去求相應位數的自冪數2
。
#include
#include
intmain()
if(1== i)
}elseif(
2== i)
}elseif(
3== i)}}
system
("pause");
return0;
}
#include
#include
#include
intmain()
for(sum =
0, j =
0; j < n; j++)if
(sum == i)
}system
("pause");
return0;
}
switch 語句和 if 語句都能實現多選擇結構,可以根據個人習慣進行選擇。 ↩︎
注意:有符號位 int 的範圍是 -2147483648—2147483647,無符號位 int 的範圍是 0—4294967295,能實現部分 10 位自冪數的計算。使用高精度計算,可以得到超過 int 型別上限的自冪數。 ↩︎
關於水仙花數
前幾天看到有人去面試,筆試要求寫出列印水仙花數 這裡先解釋下什麼是水仙花數,以153為例,153 1的三次方 5的三次方 3的三次方。也就是所謂的水仙花數是指乙個三位數,其各位數字立方和等於該數本身。那麼,我們先來看 public static void main string args 其中,x ...
求水仙花 ghpython 水仙花數02
今天咱們繼續來看看老潘微博裡的乙個python小案例,求水仙花數,這個小案例在前兩天已經分享了,今天分享另一種方法,常言道只要思想不滑坡,方法總比困難多,而且今天的方法個人覺得更pythonic一點。水仙花數 四葉玫瑰數 五角星數 由於2位數的自冪數不存在,這裡直接從100遍歷到100000 for...
關於水仙花數問題 python
這個問題本身並不難,從題目中已經得知判斷的標準是 滿足方程abc a 3 b 3 c 3即可,所以解決問題的關鍵是將乙個三位數的百位,十位,個位的數分離出來,具體的辦法已在 中給出。編寫乙個程式,求 100 999 之間的所有水仙花數。如果乙個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。...