python求解水仙花数的方法
本文实例讲述了python求解水仙花数的方法。分享给大家供大家参考。具体如下:
一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。
#!/usr/bin/python defget_flower(n,ofile): D_pow=[pow(i,n)foriinrange(0,10)] V_min=1*pow(10,n-1) V_max=sum((9*pow(10,x)forxinrange(0,n))) T_count=0 printD_pow,V_max,V_min nums=[1]+[0]*(n-1) print'Start:',nums idx=n-1 tmp_l=[0]*10 whileTrue: nums[idx]+=1 ifnums[idx]<10: j=idx+1 whilej<n: nums[j]=nums[idx]#reset j+=1 v=sum((D_pow[x]forxinnums)) ifv<=V_maxandv>=V_min: T_count+=1 #testifisflower #print'dotest:',''.join(map(str,nums)) k=0 whilek<10: tmp_l[k]=0 k+=1 N=0 forkinnums: tmp_l[k]+=1 N+=1 whileN>0: p=v%10 iftmp_l[p]>0: tmp_l[p]-=1 N-=1 else: break v/=10 ifN==0: print>>ofile,'hit',sum((D_pow[x]forxinnums)) idx=n-1 elifidx==0: print'done' break else: idx-=1 print't_count',T_count if__name__=='__main__': withfile('./f.txt','wb')aso: get_flower(21,o) #get_flower(3,o)
希望本文所述对大家的Python程序设计有所帮助。