Euler 项目问题 #12 Python 代码给出了奇怪的结果

艾莉安·德万

我试图解决Project Euler 的第 12 个问题这就是问题:

三角形数的序列是通过将自然数相加而产生的。所以第 7 个三角形数将是 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28。前十项将是:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

让我们列出前七个三角形数的因数:

  • 1:1
  • 3:1,3
  • 6: 1,2,3,6
  • 10: 1,2,5,10
  • 15: 1,3,5,15
  • 21: 1,3,7,21
  • 28: 1,2,4,7,14,28

我们可以看到 28 是第一个有超过 5 个除数的三角形数。

第一个有超过 500 个除数的三角形数的值是多少?

我定义了两个函数来完成这项工作:

1) allfactor(x):这以列表形式为我们提供给定数字的所有因子。例子:allfactor(10)给我们[1, 2, 5, 10]

2) TriangularNo(x): 这给了我们第 n 个三角形数。例子TriangularNo(5)给了我们5

这是我写的完整代码:

facs=[]

def allfacof(x):
    for i in range(1,int(x/2)+1):
        if x%i==0:
            facs.append(i)
        else:
            pass
    facs.append(x)
    return(facs)



def TriangularNo(x):
    no=0
    for i in range(1,x+1):
        no=no+i
    return(no)

a=0 # a will tell us the number of iterations

while True:
    a+=1
    N=TriangularNo(a)
    length=(len(allfacof(N)))
    if int(length)>=500:
        print(N)
        break
    else:
        pass

当我运行此代码时,我得到1378的输出显然是错误的,因为len(allfacof(1378))结果证明是8而不是500问题中的要求。

注意在while循环中,我使用if int(length)>=500:所以这意味着当我的代码运行时,length以某种方式获得值 = 500 但是当我单独运行该函数时,它说它的长度为 8。

我只是无法找出错误。请帮我

亚当

问题是您使用的facs是全局变量,而您只是附加到该项目。您应该使其成为 allfacof() 的成员,以便它在每个值之后清除。如果你仔细看看,facs你会发现它等于

1, 1, 3, 1, 2, 3, 6, 1, 2, 5, 10 ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python项目Euler#4。我的代码有什么问题?

来自分类Dev

项目Euler#1 python代码不起作用

来自分类Dev

Python项目Euler#15

来自分类Dev

项目Euler Prob 7 Python

来自分类Dev

为什么我的代码运行缓慢(甚至可以正常工作)?[Project Euler 12] [Python 3.3]

来自分类Dev

Project Euler 12 Python代码无法运行,运行缓慢还是什么?

来自分类Dev

项目Euler在python中获得最小倍数

来自分类Dev

Python-Euler项目#80,了解错误

来自分类Dev

我对Euler 17项目的解决方案出了什么问题?

来自分类Dev

项目Euler Q27:此代码有什么问题?

来自分类Dev

项目 euler #5 的代码不起作用

来自分类Dev

Python代码冻结了我的计算机-Euler项目58

来自分类Dev

欧拉(Euler)项目17未知问题

来自分类Dev

解决项目Euler#4的问题

来自分类Dev

尝试项目Euler#3的问题

来自分类Dev

python 2和3的相同代码给出了不同的结果

来自分类Dev

项目Euler#25 Python为什么这行不通?

来自分类Dev

在项目Euler 37中使用Python列出循环

来自分类Dev

了解Python中的Euler项目解决方案

来自分类Dev

尝试使用 Java 解决项目的 Euler 第一个问题,但无法返回结果

来自分类Dev

需要帮助解决Project Euler问题#35 python吗?

来自分类Dev

朱莉娅(Julia)代码对Euler项目29给出的答案错误

来自分类Dev

Python开罗将图形另存为NP数组给出了奇怪的结果

来自分类Dev

Euler项目23 MATLAB

来自分类Dev

Java项目Euler 2

来自分类Dev

我的euler 7代码有什么问题?

来自分类Dev

如何使用wget下载所有项目Euler的问题

来自分类Dev

项目Euler 23出现问题(循环)

来自分类Dev

我的 Euler Practice 代码有更清晰的 Python 版本吗

Related 相关文章

热门标签

归档