连续整数之和

来源:互联网 发布:淘宝真实流量平台 编辑:程序博客网 时间:2024/04/28 04:00

给定一个正整数sum,找出所有连续的、和为sum的正整数序列。如sum为27,则2~7,8~10,13~14为所求。

 

相关:连续整数之和为1000的共有几组(微软面试题)

 

代码:

 

 

 

改进代码:

提示:

先求出一个和current_sum(1+2+3+...),并且其是第一个大于等于给定值sum的和。如sum为27,则current_sum就是1+2+3+4+5+6+7=28。

于是current_sum形式为i+(i+1)+...+j,

1)如果比sum大,则把最小的那个数去掉变成(i+1)+...+j。

2)如果比sum小,则加上j+1变成i+(i+1)+...+j+(j+1)。

3)如果等于sum,则i~j即为所求。接着把和放大,即加上j+1变成i+(i+1)+...+j+(j+1)。

上述步骤反复执行直到i>sum/2。

 

 

原创粉丝点击