【問題】取乙個三位數。如果它的每個位上的數字的立方和與自身相等,則稱之為水仙花數。
請程式設計求出所有的水仙花數。
這個問題比較容易解。只要對每乙個三位數進行實驗,符合要求的就輸出。
def
is_shui_xian
(n):
if n <
100or n >
999:
return
false
sum=
0for i in
str(n)
:sum
+=int
(i)**
3return n ==
sumif __name__ ==
'__main__'
:for i in
range
(100
,1000):
if is_shui_xian(i)
:print
(i)
把乙個三位數,取得每一位數字,這裡用了最直觀的想法:直接變成串,取每乙個字元,再轉回到數字就可以了。
更有效率的方法(當然,僅對此題而言,效率是無所謂的)是:不斷地除10取餘。
下面用取餘法再來一遍:
def
is_shui_xian
(n):
if n <
100or n >
999:
return
false
sum=
0 n1 = n
while n1 >0:
sum+=
(n1 %10)
**3n1 //=
10return n ==
sumif __name__ ==
'__main__'
:for i in
range
(100
,1000):
if is_shui_xian(i)
:print
(i)
其實這個問題還可以擴充套件為更一般的問題:
有乙個 n 位數,如果它的每一位數字的n次方之和等於自身,則稱它為 n 階的花朵數。
請求出所有的 21 階花朵數吧。
這個問題就要考慮效率了。列舉每乙個21位數字是不現實的。
水仙花數題解
水仙花數 3位數,其各位數字立方和為該數本身.include stdio.h void main int i,j,k,n 定義n的個位數為k,十位為j,百位為i printf narcissus numbers are for n 100 n 1000 n 使n從100 999迴圈 i n 100 ...
3 水仙花數
題目 列印出所有的 水仙花數 所謂 水仙花數 是指乙個三位數,其各位數字立方和等於該數本身。例如 153是乙個 水仙花數 因為153 1的三次方 5的三次方 3的三次方。程式分析 利用for迴圈控制100 999個數,每個數分解出個位,十位,百位。1 suppresswarnings 2public...
水仙花數題解c
題目 輸入乙個三位數的正整數,判斷它是否是水仙花數,所謂水仙花數是指這個數等於它每個位置上的數字的立方和 輸入 輸入乙個三位數的正整數,首位不為0 輸出 如果是水仙花數,輸出 yes 否則輸出 no 這道題是學c 語言的中度難度,需要用到for迴圈,但是對於我這樣的高手小菜一碟,哈哈 我很自戀 in...