以五位水仙花数为例
>>> for i in range(10000,100001):
sum=0
temp=i
while temp:
sum=sum+(temp%10)**5
temp//=10
if sum==i:
print(i)
54748
92727
93084
改进版,对于任意位数的整数
for i in range(0,100001):
temp=i
sum=0
a=len(str(i))
while temp:
sum+=(temp%10)**a
temp//=10
if sum==i:
print(i,end=' ')
改进为函数版
>>> def narcissus():
print('输出所有水仙花数:' )
for i in range(0,100001):
temp=i
sum=0
a=len(str(i))
while temp:
sum+=(temp%10)**a
temp//=10
if sum==i:
print(i,end=' ')
>>> narcissus()
输出所有水仙花数:
1 2 3 4 5 6 7 8 9 25 36 125 153 216 370 371 407 729 1296 1634 5648 8208 9474 16807 16807 32768 32800 32801 33824 54748 59049 91819 92727 93084 99836