题目
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入格式:
输入一个正整数n(1≤n≤1000)
输出格式:
输出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔,每个序列最后一个整数后要有一个空格。如果没有符合要求的序列,输出“None”。
输入样例1:
15
输出样例1:
1 2 3 4 5
4 5 6
7 8
输入样例2:
16
输出样例2:
None
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int j = 0;
int t = 0;
int re = 0;
scanf("%d",&n);
for (i = 1; i < n; i++)
{
for (j = i+1; j < n; j++)
{
if ((i + j) * (j - i + 1) / 2 == n)
{
re = 1;
for (t = i; t <= j; t++)
{
printf("%d ",t);
}
printf("\n");
}
}
}
if (re == 0)
{
printf("None\n");
}
return 0;
}