python求解水仙花数的方法

本文实例讲述了python求解水仙花数的方法。分享给大家供大家参考。具体如下:

一个n位的十进制正整数,如果它的每个位上的数字的n次方的和等于这个数本身,则称其为花朵数。

#!/usr/bin/python
def get_flower(n, ofile):
d_pow=[pow(i,n) for i in range(0,10)]
v_min=1*pow(10,n-1)
v_max=sum((9*pow(10,x) for x in range(0,n)))
t_count=0
print d_pow, v_max, v_min
nums=[1]+[0]*(n-1)
print ‘start:’, nums
idx=n-1
tmp_l=[0]*10
while true:
nums[idx]+=1
if nums[idx]>ofile, ‘hit’, sum((d_pow[x] for x in nums))
idx=n-1
elif idx==0:
print ‘done’
break
else:
idx-=1
print ‘t_count’, t_count
if __name__ == ‘__main__’:
with file(‘./f.txt’, ‘wb’) as o:
get_flower(21, o)
#get_flower(3, o)

希望本文所述对大家的python程序设计有所帮助。