Given a positive integer
N
, how many ways can we write it as a sum of consecutive positive integers?Example 1:
Input: 5 Output: 2 Explanation: 5 = 5 = 2 + 3Example 2:
Input: 9 Output: 3 Explanation: 9 = 9 = 4 + 5 = 2 + 3 + 4Example 3:
Input: 15 Output: 4 Explanation: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5Note:
1 <= N <= 10 ^ 9
.
public int consecutiveNumbersSum(int N) {
int count = 0;
int n = 1;
while (true) {
int fenZi = 2*N - n*(n-1);
if (fenZi <= 0) {
break;
}
if (fenZi % (2*n) == 0) {
count ++;
}
n++;
}
return count;
}