这是【Python 百练成钢】系列文章的第一篇,计划完成 100 道练习题。
计算水仙花数
需求描述:
输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。 例如,153是“水仙花数”,因为:
153
=
1
3
+
5
3
+
3
3
。
153 = 1^{3} + 5^3 + 3^3 。
153=13+53+33。
这里我提供 2 种实现方法:
import math
def get_flower_nums():
"""
计算 水仙花数
:return 结果列表
"""
res_one = []
a = b = c = 0
for n in range(100, 1000):
a = n // 100
b = (n - a * 100) // 10
c = n - a * 100 - b * 10
if n == a ** 3 + b ** 3 + c ** 3:
res_one.append(n)
n += 1
res_second = []
for num in range(100, 1000):
sum = 0
for s in str(num):
sum += int(s) ** 3
if sum == num:
res_second.append(num)
return res_one, res_second
print(get_flower_nums())
输出结果(两种方法的结果一样):
([153, 370, 371, 407], [153, 370, 371, 407])
|