一个正整数有可能被表示成n(n>=2)连续正整数之和如:
15=1+2+3+4+5;
15=4+5+6;
15=7+8;
请编写程序,根据输入的正整数,找出符合这种要求的所有连续正整数序列,如没有则输出none
输入:
15
输出:
1 2 3 4 5
4 5 6
7 8
输入:
16
输出:
15=1+2+3+4+5;
15=4+5+6;
15=7+8;
请编写程序,根据输入的正整数,找出符合这种要求的所有连续正整数序列,如没有则输出none
输入:
15
输出:
1 2 3 4 5
4 5 6
7 8
输入:
16
输出:
none
#include <stdio.h>
void FindSeqNumEqualSum(const int nNum)
{
bool flag = true;
int i, j, k, sum;
int nMid = nNum / 2 + 1;
if(nNum > 0)
{
for(i = 1; i < nMid; ++ i)
{
sum = 0;
for(j = i; j <= nMid; ++ j)
{
sum += j;
if(sum > nNum)
break;
if(sum == nNum)
{
flag = false;
for(k = i; k <= j; ++ k)
printf("%d ",k);
printf("\n");
}
}
}
}
if(flag)
printf("None\n");
}
int main()
{
int nNum;
printf("please input a num:");
scanf("%d",&nNum);
FindSeqNumEqualSum(nNum);
return 0;
}