自己写了个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个整数
这篇博客介绍了一种使用Python解决等差数列求和的算法。通过输入一个数字,程序会找到一系列连续整数之和等于输入数字的解。算法核心在于寻找满足特定条件的等差数列首项a1,即a1为奇数,且平方等于8倍的总和加一个平方数。程序通过循环和数学公式进行计算,并打印出解的整数序列。
1212

被折叠的 条评论
为什么被折叠?



