gpt4 book ai didi

python - 欧拉计划 34 帮助 [Python]

转载 作者:行者123 更新时间:2023-11-28 17:28:51 25 4
gpt4 key购买 nike

问题是:

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 之间的数字。如果一个数字有效,我将其放入列表中。最后,我总结了 list 并打印出来。

这段代码只给我 145 作为答案。我看不出我做错了什么,有人可以帮忙吗?

我并不是要发布欧拉问题的解决方案。

最佳答案

您的阶乘函数不正确,因为它错误地将 0! 计算为 0。您可以这样修复它:

def factorial(num):
"""Factorial"""
if num < 2:
return 1
...

然后您的代码将打印 40730

PS:在您的范围内唯一另一个奇怪的数字是 40585。

关于python - 欧拉计划 34 帮助 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36198139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com