【发布时间】:2021-05-05 07:51:30
【问题描述】:
我最近遇到了一个叫做“因子”的数学对象,它是一个等于其各个数字的阶乘之和的数字。例如,145 是一个因式,因为 1! + 4! + 5! = 1 + 24 + 120 = 145。
所以我决定编写一些基本的 Python 代码,以便在给定范围内系统地查找数字。以下是我想出的代码:
#factorion finding
from numpy import *
from math import *
def factorion(a, b):
factorions = []
for i in range(a, b):
atom = []
while i != 0:
atom.append(i % 10)
i = i // 10
sum = 0
j = 0
while j < len(atom):
sum += factorial(atom[j])
j += 1
if sum == i:
factorions.append(i)
return factorions
factorion(1,1000)
Python 没有为此给我任何错误,但输出只是空列表 [],当我知道至少应该有 145 以及 1 和 2 时。
这里有什么问题?
【问题讨论】:
-
为了使您的代码清晰(呃)不要使用
*导入。我认为您在这里没有使用任何numpy函数。如果factoral来自math,你应该说清楚。在任何情况下,您都需要单步执行您的代码,确保每个表达式都产生预期的结果。这就是我必须做的来帮助你。 -
你确定有这样的对象吗?据我所知,找到一个一般数字的因子是 NP-hard 问题,我怀疑在
NumPy或math模块中是否存在某些对象。当然,我可能是错的,所以请提供这个模块的文档。此外,在您的代码中,您使用factorial而不是factorion,这只是x!。 -
您尝试在循环内更新范围变量
i不起作用
标签: python numpy loops factorial