【发布时间】:2018-04-28 23:36:46
【问题描述】:
好的,所以我正在研究Euler Problem 12(找到第一个因数超过 500 的三角形数),我的代码(在 Python 3 中)如下:
factors = 0
y=1
def factornum(n):
x = 1
f = []
while x <= n:
if n%x == 0:
f.append(x)
x+=1
return len(f)
def triangle(n):
t = sum(list(range(1,n)))
return t
while factors<=500:
factors = factornum(triangle(y))
y+=1
print(y-1)
基本上,一个函数会遍历输入数字 n 以下的所有数字,检查它们是否均分为 n,如果是,则将它们添加到列表中,然后返回该列表中的长度。另一个通过将列表中从 1 到输入数字的所有数字相加并返回总和来生成一个三角形数字。然后,while 循环继续使用迭代变量y 作为triangle 函数的输入生成一个三角数,然后在其上运行factornum 函数并将结果放入factors 变量中。循环继续运行,y 变量继续递增,直到因子数超过 500。然后打印结果。
但是,当我运行它时,什么也没有发生 - 没有错误,没有输出,它只是继续运行和运行。现在,我知道我的代码不是最有效的,但我让它运行了相当长一段时间,但它仍然没有产生结果,所以在我看来更有可能是某个地方出现了错误。我一遍又一遍,似乎找不到错误。
我只是要求不要直接给出完整的解决方案或大幅改进的解决方案,而是指出我的错误或需要改进的地方,因为我做欧拉问题的原因是为了改进我的编码.谢谢!
【问题讨论】:
-
尝试在 while 循环中打印 y 和因数。
-
有一个更好的写法
sum(list(range(1,n)))...(n**2 + n) / 2
标签: python python-3.x math