Sum of the factorial of the digits of a number - wierd behaviour

SiWi wimmersimon at googlemail.com
Wed Dec 9 12:39:51 EST 2009


On Dec 9, 6:36 pm, SiWi <wimmersi... at googlemail.com> wrote:
> Dear python community,
> I've got a wierd problem and I hope you can help me out at it.
> I wrote the following code to find the Sum of the factorial of the
> digits of a number (this is for Project Euler 74):
>
> def fac(n):
>     x=1
>     for i in range(2,n+1):
>         x*=i
>     return x
>
> t=tuple(fac(n) for n in range(1,10))
>
> def decimals(x):
>     i=1
>     d=[]
>     while x>0:
>         d.append(x%10)
>         x=x/10
>     return d
>
> def sumfac(x):
>     return sum(t[n-1] for n in decimals(x))
>
> The problem is that i get the following results, for which I can't see
> any reason:
> sumfac(145)->145 (1!+4!+5!=1 + 24 +120 = 145) - ok
> sumfac(1454)-> 169 - ok
> sumfac(45362) -> 872 - ok
> sumfac(363600) -> 727212 - wrong, should be1454
>
> Greetings,
> SiWi.

Oops, found it myself. You can ignote the message above.



More information about the Python-list mailing list