public class b {
public static void main(String[] args) {
getlx(15);
}
private static void getlx(int n) {
//定义最小序列
int min = 1;
//定义最大序列
int max = 1;
//定义序列的和
int sum = 1;
//判断
//序列最少有两个数 n/2后的两个连续的数的和一定大于 n 值 n/2+(n/2+1) = n+1
while (min < (n / 2 + 1)) {
//如果和等于n 那么打印出该序列
if (sum == n) {
for (int i = min; i <= max; i++) {
System.out.print(i + " ");
}
System.out.println();
//第一个序列打印完之后,需要判断第二个序列 依次类推
//而第二个序列的最小值为min+1 最大值为 max+1
//在进行 和 与 n 的比较是我们需要得到 之前序列的和 减去 之前序列的最小值 加上 这次序列的最大值 组成的序列 的和来进行比较
//之前序列的和 减去 之前序列的最小值
sum = sum - min ;
//序列 最小值 最大值 各自自加1 组成序列
min ++ ;
max ++ ;
//序列的和
sum = sum + max ;
}
//得到的序列在进行判断
//和 大于 n 则减去最小值 最小值自加1
if (sum > n) {
sum = sum - min ;
min++ ;
//和 小于 n 则 最大值自加1 与 和 相加 的到一个新的和 继续进行判断
}else{
max ++ ;
sum = sum + max ;
}
}
}