145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.
Find the sum of all numbers which are equal to the sum of the factorial of their digits.
Note: as 1! = 1 and 2! = 2 are not sums they are not included.
思路。没点思路
代码:
import time
t=time.time()
facterlist=[[x,0] for x in range(10)]
for x in xrange(10):
if x==0:
facterlist[0]=1
else:
facterlist[x]=x*facterlist[x-1]
def iscurious2(n):
success=True
tempsum=sum([facterlist[int(x)] for x in str(n)])
if tempsum!=n:
success=False
return success
maxnum=2540161
relist=[]
tempn=10
while tempn<=maxnum:
if iscurious2(tempn):
relist.append(tempn)
tempn+=1
for item in relist:
print item
print sum(relist)
print time.time()-t
运行结果为:
145
40585
40730
15.8159999847
,,
缺点:1.为什么maxnum=2540161呢?
2.好慢啊!