問題は次のとおりです。Project Euler 34 Help [Python]
145は1として好奇心が強いです! + 4! + 5! = 1 + 24 + 120 = 145.
数字の階乗の和に等しいすべての数字の合計を求めます。
注:1として! = 1と2! = 2はそれらが含まれていない合計ではありません。
# Project Euler Problem 34
def factorial(num):
"""Factorial"""
product = num
for i in range(2, num):
product *= i
return product
def check_sum(number):
list_digits = list(str(number))
check_sum = 0
for digit in list_digits:
check_sum += factorial(int(digit))
if check_sum == number:
return True
def find_final_sum():
"""Find the sum of all the numbers."""
final_list = []
final_sum = 0
counter = 3
while counter < 200000:
if check_sum(counter):
final_list.append(counter)
counter += 1
else:
counter += 1
for j in final_list:
final_sum += j
print(final_sum)
find_final_sum()
私は階乗を見つける関数を定義しました。 次に、数値がその桁の階乗の和に等しいかどうかをチェックする関数を定義しました。 最後に、3から200000までの数字をチェックします。数字が機能する場合は、リストに入れます。 最後に、リストをまとめて印刷します。
このコードでは、145という答えが得られます。私は何が間違っているのか分かりません。
私はオイラーの問題を解決するつもりはありません。
変数と同じ名前の関数があります(final_sum) –
これを変更します。 – RandomCoder
不思議な数字が有限です。 [Factorion:Upper Bound](https://en.wikipedia.org/wiki/Factorion#Upper_bound)を参照してください。 –