如果一个m位数,其每个位上的数字的m次幂之和为该数本身,则叫做水仙花数。 例如:153=13+53+33153=13+53+33就是一个水仙花数。 请建立一个函数能判断一个输入的数是否水仙花数。承上题,建立一个函数,当输入某参数maximum后,能自动找出所有小于等于maximum的水仙花数。
def wflower(n):
# n=input('请输入一个大于100的参数n:')
n=str(n)
m=len(n)
i=0
s=0
while i<m:
s=s+int(n[i:i+1:1])**m
i=i+1
if int(n)<100:
print('请确认n是否大于100')
else:
if s==int(n):
return('True')
else:
return('False')
max=input('请输入参数max(max>=1000):')
alist=[]
for k in range(100,int(max)):
re=wflower(k)
if re=='True':
alist.append(k)
k=k+1
else:
print('100到max之间的水仙花数有:',alist)
nunber = input("input the limit:")
for a in range(11, int(nunber)+1):
a += 1
NumStr = str(a)
power=len(NumStr)
i,sum=0,0
for i in range(0,power):
sum=sum+int(NumStr[i])**power
if sum==a:
print(a)
我这个看起来简单不少叭,测试也还行,任意位数哟