import java.util.Scanner;
/**
* 题目描述:一个正整数可以表示为n(n>2)个连续正整数之和
* eg: 15 = 1+2+3+4+5; 15 = 4+5+6; 15 = 7+8
* 根据输入的任意一个正整数,找出 符合这种要求的所有正整数序列
* 输入数据: 一个正整数
* 输出数据: 在标准输出上打印出符合题目描述的全部正整数序列,
* 每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。
* 如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。
* 此外,序列不允许重复,序列内的整数用一个空格分隔。
* 如果没有符合要求的序列,输出“NONE”
* 解题思路:采用最简单粗暴的穷举法思想O(n*n),一个正整数i可以表示为n(n>2)个连续正整数之和,
* 那其中最大整数max不超过i/2+1的大小,所以从1开始,往上求和。找到相等的就打印序列
* @author Administrator
*
*/
public class Test {
public static void print(int n) {
int max = 1 + n/2;
boolean flag = false;
for(int i = 1; i < max; i++) {
int cur = i;
for(int j = i + 1; j <= max; j++) {
if(cur < n) {
cur += j;
}
if(cur == n) {
flag = true;
for(int p = i; p <= j; p++) {
System.out.print(p + " ");
}
System.out.println();
break;
} else if(cur > n) break;
}
}
if(flag == false) System.out.println("NONE");
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个正整数");
int n = in.nextInt();
print(n);
}
}