##2.21 只考加法的面试题后续1
用内存换时间可进一步优化上一篇代码3
可以考虑先生成不满足条件的列表,将不满足条件的元素置位,再从这个列表中找出没有置位的元素,该方法时间复杂度可控制在O(n^2)
def func4():
base = 2
lim = 5000
seq = [0] * lim
outseq = []
for i in range(base,lim):
for j in range(lim):
aa = j * i + i * (i - 1) / 2
if aa > lim:
break
else:
if not seq[aa-1]:
seq[aa-1] = aa
for i in range(len(seq)):
if seq[i] == 0:
outseq.append(i + 1)
return outseq
print func4()