問(wèn)題
和為n 連續(xù)正數(shù)序列
問(wèn)題分析
此問(wèn)題為等差序列求和的逆計(jì)算
等差學(xué)列求和公式為:S = na + dn(n-1)/2 (n為序列個(gè)數(shù),a為序列最小值,d為等差值,此處d=1)
轉(zhuǎn)化后可得 a = (2S-n(n-1))/2n
即可得條件((2S-n(n-1))/2n) % 1 == 0 && (2S-n(n-1))/2n > 0 && n > 1 && a > 0
算法實(shí)現(xiàn)
def getContinuousSequence(number=3):
if number <1:
raise Exception, "參數(shù)錯(cuò)誤"
data = []
for n in range(2, number):
a = (number-(n*(n-1)/2))*1.00/n
if a % 1 == 0 and a > 0:
a = int(a)
data.append(range(a, a+n))
return data
if __name__ == '__main__':
print getContinuousSequence(13)