一个正整数有可能被表示成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;
- }