题目:水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。
例如:153是一个“水仙花数”,因为 153 是个 3位数,而1**3+5**3+3**3==153。
输入一个正整数max,输出100到max之间的所有水仙花数(包括max)。
程序分析:利用for每个数,把int类型转为str类型,循环分解出每一位数。
n = int(input('请输入一个正整数:'))
for i in range(100, n): # 循环范围内的所有int
s = 0
p = str(i) # 每次检测的单一int,需要用到每一位上的数字,因此转为str
for x in p: # 获取每一位上的数字
s = s + int(x) ** len(p) # 将每一位上的数字按规则计算
if s == i: # 数位上的数字都相加完毕后,与原数字比较是否相等
print(i) # 如果相等,那么print;如果不相等,进行下一轮
输出结果:
--------------------------------------------------------------------------------
请输入一个正整数:2500
153
370
371
407
1634
--------------------------------------------------------------------------------