使用Python求解水仙花問題

2021-09-29 19:32:50 字數 720 閱讀 9628

題目:輸出所有的水仙花數。所謂水仙花數是指乙個3位數,其各位數字的立方和等於該數本身。例如,153是乙個水仙花數,因為153 = 1立方 + 5立方 + 3立方。

解決方法:

方法一:使用列表推導式

1 data=[i for i in range(100,1000)if pow(i//100,3)+pow(i//10%10,3)+pow(i%10,3)==i]

這個方法是比較簡單,但是數字只限於100-999,如果超出了這個範圍又要在除1000,所以在方法二中我決定使用分解的方法,將乙個數字分解成個位、十位、百位、千位、萬位等,這樣便可以一直求到很大的數字,而且**還比較簡潔。

方法二:使用函式和迴圈

1

defd():

2def

f(n):

3 c=list(n[::])

4returnc5

for i in range(100,100000):

6 d=f(str(i))

7 s=0

8for j in

d:9 s+=pow(int(j),3)

10if(s==int(i)):

11print("

%d"%s)

12 d()

程式執行結果:

153370

371407

水仙花數求解

c 如果表示x的y次方,可以用pow x,y 記得加標頭檔案 include 也可以直接相乘,如 pow x,3 起初執行時發現if條件語句沒有起到任何作用,程式輸出了m n之間的所有數字。原因是將x的y次方表示成了x y int main n 100 int i 1,count 1 while c...

水仙花問題

題目 輸出所有的 水仙花數 1.水仙花數是乙個三位數 2.水仙花數的個位 十位 百位的數字立方和等於原數。分析 運用for迴圈遍歷所有的三位數,三位數從100開始,到999結束 for int i 100 i 999 i 取出三位數中的個位十位百位數字 int a 數的個位 int b 數的十位 i...

python求解水仙花數的方法

乙個n位的十進位制正整數,如果它的每個位上的數字的n次方的和等於這個數本身,則稱其為花朵數。程式設計客棧 usr bin python def get flower n,ofile d pow pow i,n for i in range 0,10 v min 1 pow 10,n 1 v max ...