我在python中有代码片段,长时间使用长数组:
n =30000
t = range(1,n)
s = sum(t)
for i in t:
for j in t[i:]:
if ts-j == i*j:
//some simple code
有没有办法优化它?我已经检查过diff和multiply花了很多时间。我试过numpy但结果最糟糕。
澄清:条件很少得到满足 - 肯定不到10,所以它根本不影响性能。这将只是简单的assignemt。问题在于if条件和算术运算的大数字。
答案 0 :(得分:1)
由于您没有指定ts
是什么,我们必须假设它是一个整数常量。
内循环的条件是ts - j == i * j
,只有在i + 1
和j
除以ts
时才有可能。
因此,您应该考虑ts
并生成满足(i + 1) . j
的所有分解1 ≤ i ≤ j ≤ n
。