给定一个正整数
N
,试求有多少组连续正整数满足所有数字之和为N
?
int consecutiveNumbersSum(int N) {
int count = 0;
int klimits = sqrt(2 * N) + 1;
int tmp = 0;
for (int k = 1; k <= klimits; k++) {
if (2 * N % k == 0) {
tmp = 2 * N / k - k - 1;
if (tmp >= 0 && tmp <= 2 * N && tmp % 2 == 0) {
count++;
}
}
}
return count;
}