求和为n 连续正数序列
题目:输入一个正数n,输出所有和为n 连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。
func sum(m int){
var a,b int
a = 1
b = a + 1
for m > b{ // sn = n*a1 + n*(n-1)*d/2 等差数列
for a < b{ // 30 = 2*(5-1+1)*1 + (5-1+1)*(5-1-1+1) 12345
if 2*m == 2*(b-a+1)*a +(b-a+1)*(b-a-1+1){
println(a,b)
break
}
a ++
}
a = 1
b++
if b > m {
break
}
}
}
结果
1 5
4 6
7 8
网友评论