自己写了个Python解法
sum = int(input("Please input an number:"))
suml = sum // 2
for i in range(1,suml+1):
a1 = ((2 * i - 1) ** 2 + 8 * sum)**0.5
a3 = (2 * i - 1) ** 2 + 8 * sum
a2 = a1 + 1 - 2 * i
if a1 * a1 == a3 and a1 % 2 == 1:
b = int(a2 / 2)
for j in range(b):
temp = i + j
print("%d " % temp,end="")
print("")
主要还是根据等差数列和公式 sum=a1*n + (n*(n-1)*0.5
n = {(1-2*a1)+((2*a1-1)**2+8*sum)**0.5}*0.5
根据n来判断,n必定为整数,且a1 = ((2 * i - 1) ** 2 + 8 * sum)**0.5为奇数,且a1必定<=sum/2
所以从1到sum/2循环计算n,当能为符合条件的整数时,循环条件i为a1,n为包含i在内的连续n个整数