51.和为n连续正数序列。
题目:输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
分析:这是网易的一道面试题。
VB.NET codes as below:
Module MyModule
Sub Main()
Print(15)
Console.ReadKey()
End Sub
Public Sub Print(ByVal num As Integer)
Dim n = 2
While (CountSum(n - 1) <= num)
Dim mn = num - CountSum(n - 1)
If (mn Mod n = 0 And mn <> 0) Then
Dim m = mn / n
For i = m To n + m - 1
Console.Write("{0} ", i)
Next
Console.WriteLine()
End If
n += 1
End While
End Sub
Private Function CountSum(ByVal m As Integer) As Integer
Dim sum = 0
For i = 0 To m
sum += i
Next
Return sum
End Function
End Module