获取其总和与给定数字匹配的连续数字
我正在经历一个简单的程序,它取一个数字并找到与给定数字匹配的连续数字的出现次数。
例如:
if input is 15, then the consecutive numbers that sum upto 15 are:
1,2,3,4,5
4,5,6
7,8
So the answer is 3 as we have 3 possibilities here.
当我在寻找解决方案时,我发现了以下答案:
static long process(long input) {
long count = 0;
for (long j = 2; j < input/ 2; j++) {
long temp = (j * (j + 1)) / 2;
if (temp > input) {
break;
}
if ((input- temp) % j == 0) {
count++;
}
}
return count;
}
我无法理解这如何解决要求,因为该程序使用了一些我无法正确理解的公式,以下是我的疑问:
- for 循环从 2 开始,这是什么原因?
-
long temp = (j * (j + 1)) / 2;
这个逻辑意味着什么?这对解决问题有何帮助? -
if ((num - temp) % j == 0)
这也意味着什么?
请帮助我理解此解决方案。