您的位置:首页 > 其它

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

2012-02-06 13:44 351 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐