输入一个正数n,输出所有和为n连续正整数序列

来源:互联网 发布:js input radio 赋值 编辑:程序博客网 时间:2024/04/29 04:14
public class lzwCode {public static void main(String[] args) {findCount(15);}/** * 题目:输入一个正数n,输出所有和为n连续正整数序列。 *  * 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 *  * 思路:因为整数序列是有序的,可以设立两个游标begin和end,通过判区间[begin,end] * 的和是否为N来得到这个序列。如果区间和大于n,begin往前移动,如果小于n,end往前移动, * 等于就输出这个区间。时间复杂度是0(n)。 *  * @param n */public static void findCount(int n) {int begin = 1;int end = 2;int sum = begin + end;while (begin < end && begin < (n + 1) / 2) {if (sum < n) {end++;sum += end;} else if (sum > n) {sum -= begin;begin++;} else {System.out.println(begin + " 到 " + end + " 和等于 " + n);sum -= begin;begin++;}}}}

控制台结果:

1 到 5 和等于 15
4 到 6 和等于 15
7 到 8 和等于 15



原创粉丝点击