项目Euler#23 - 无法找出代码中的错误

时间:2013-07-04 04:05:53

标签: python

链接:http://projecteuler.net/problem=23

  

如果你不想知道答案,这是一个警告,不要再看了。

我已经被困了一段时间。我知道网上有解决方案。但我只是无法弄清楚代码中的问题。我已经附加了代码和我创建的因素模块的代码。任何帮助表示赞赏。

实际答案= 4179871.我的答案= 4190404


from math import *
from time import *
from prime import *
from factors import *

abundant = list(n for n in xrange(12,28124) if n < sum_of_factors(n))

sums = {}

for i in abundant: for j in abundant: if (i+j) > 28123: break else: sums[i+j] = 1

non_abun = [i for i in range(1,28124)] print sum(non_abun) - sum(sums)

因素代码 -


from time import *
from math import *

def factors(num): factors_array = [1,]

n = num
for k in range(2,int(ceil(sqrt(num)))):
    if(n%k == 0):
        if(k not in factors_array):
            factors_array.append(k)
            factors_array.append(n/k)

return factors_array

def sum_of_factors(num): return sum(factors(num))

1 个答案:

答案 0 :(得分:4)

factors(4)应该[1,2],但会产生[1]。修复您的factors功能。