/** * 和为n的连续正数列 * 定义序列start=1,end=2,当和sum大于n时,则先将和sum减去最小的start,并移动start++,若是小于n,则sum+=end * ,end++,若是等于则输出[start,end],并使sum加上end,++end * * @param n */ public static void sequenceN(int n) { int start = 1, end = 2, mid = (n + 1) / 2, sum = start + end; while (start < mid) { if (sum > n) { sum -= start; start++; } else if (sum < n) { end++; sum += end; } else { for (int i = start; i <= end; i++) { System.out.print(i + " "); } System.out.println(); end++; sum += end; } } }