链接: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))
答案 0 :(得分:4)
factors(4)
应该[1,2]
,但会产生[1]
。修复您的factors
功能。