Digit factorials : Problem 34 Project Euler
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.
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.
To find the upper limit for this problem observe that for a n-digit number the maximum possible Digit Factorial Sum is 9!*n
For n = 7, Max. Digit Factorial Sum is 9!*7 =2,540,160 which is a 7 digit number
For n = 8, Max. Digit Factorial Sum is 9!*8 =2,903,040 which is a 7 digit number. Hence a the Digit Factorial Sum can never be equal to a 8 digit number!
Python Code
def digitFactorials():
def fact(digit):
l=1
for i in range(digit):
l=l*digit
digit=digit-1
return l
number = 10
sumNumbers = 0
digitfactsum = 0
while number < 2540161:
strnumber = str(number)
digitfactsum = 0
for i in range(len(strnumber)):
digitfactsum = digitfactsum + fact(int(strnumber[i]))
if digitfactsum > number:
break
if digitfactsum == number:
sumNumbers = sumNumbers + number
print number,"Sum of the digits factorials is equal to the number itself"
number = number + 1
print "Required Sum is",sumNumbers
digitFactorials()
def fact(digit):
l=1
for i in range(digit):
l=l*digit
digit=digit-1
return l
number = 10
sumNumbers = 0
digitfactsum = 0
while number < 2540161:
strnumber = str(number)
digitfactsum = 0
for i in range(len(strnumber)):
digitfactsum = digitfactsum + fact(int(strnumber[i]))
if digitfactsum > number:
break
if digitfactsum == number:
sumNumbers = sumNumbers + number
print number,"Sum of the digits factorials is equal to the number itself"
number = number + 1
print "Required Sum is",sumNumbers
digitFactorials()
No comments:
Post a Comment