如果一個3位數等於其各位數字的立方和,則稱這個數為水仙花數。
例如:153 = 1^3 + 5^3 + 3^3,因此153就是一個水仙花數。
如何求1000以內的水仙花數呢?
方法一:先求得百、十、個位的數字值,再按照水仙花數的定義來找符合條件的數
def shuixianhuashu1(): for i in range(100,1000): m = i // 100 #整除獲得百位數 n = (i % 100) // 10 #十位數 k = i % 10 #個位數 if m**3 + n ** 3 + k ** 3 == i: print(i)
方法二:將數字先轉化為字符串,利用字符串索引找到百、十、個位的數字值,再按照水仙花數的定義來找符合條件的數
def shuixianhuashu2(): for i in range(100,1000): s = str(i) #將數字轉化為字符串 bai = int(s[0]) #百位 shi = int(s[1]) #十位 ge = int(s[2]) #個位 if i == bai ** 3 + shi** 3 + ge ** 3: print(i)
方法三:從百位數開始遍歷,然后遍歷十位數,個位數,再按照水仙花數的定義來找符合條件的數
def shuixianhuashu3(): for bai in range(1,10): #遍歷百位 for shi in range(0,10): #遍歷十位 for ge in range(0,10): #遍歷個位 x = bai*100 + shi*10 + ge if x == bai ** 3 + shi ** 3 + ge ** 3: print(x)