找出數字n的所有連續正整數列(即連續正整數列的和為n)從m開始
//找出數字n的所有連續正整數列(即連續正整數列的和為n)從m開始 (C#)
例如:18的正整數列為: 5 6 7 因為 18 = 5+6+7;也可以 18 = 3+4+5+6;
程式碼如下:
static void Main(string[] args)
{
findSequence(3, 33);
Console.ReadKey();
}
static void findSequence(int m, int n){
int count = 0; //用一個變數來累加,和為count
int start = m; //start 表示起始數列的位置數
while (true) //因為可能存在多個數列,所以這裡先寫一個死迴圈,下面再加限制條件
{
for (int i = start; i < n; i++) //先遍歷從start開始的位置數
{
count += i;
if (count > n) { //當某一次count大於n的時候,說明本次迴圈不成立,退出當前迴圈
count = 0;
start += 1;
break;
}
if (count == n) //如果累計的和等於n,說明找到了連續整數列,將count重置為0,進入下一次迴圈前將start++
{
count = 0;
for (int j = start; j <= i; j++ ) {
Console.Write(j + " ");
}
Console.WriteLine();
start += 1;
break;
}
}
if (start == n / 2) break;
}
}