我正在解决项目Euler上的问题23,当我试图比较1 - 28123的一组数字和包含28123以下的2个丰富数字的所有可能组合的数字列表时,我的代码一直没有返回。为了以后我可以删除它们,为效率低下的代码道歉,任何效率评论都会非常感激。
我所知道的是,我对代码'lisp'相对有信心,之前应该是正确的。干杯!
import itertools
success = []
flatten_iter = itertools.chain.from_iterable
def factors(n):
return set(flatten_iter((i, n//i)
for i in range(1, int(n**0.5)+1) if n % i == 0))
for x in range(1, 28124):
if (sum(list(factors(x))) - x) > x:
success.append(x)
lisp = []
for x in success:
lisp.append(2 * x)
numbers = []
for x in range(1, 28124):
numbers.append(x)
prefinal = [x + y for x in success for y in success]
zipped = zip(prefinal, lisp)
final = set(zipped).intersection(numbers)
print(final)