Consecutive Numbers Sum

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 + 3
Example 2:

Input: 9
Output: 3
Explanation: 9 = 9 = 4 + 5 = 2 + 3 + 4
Example 3:

Input: 15
Output: 4
Explanation: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5
Note: 1 <= N <= 10 ^ 9.

Solution:

class Solution {
    public int consecutiveNumbersSum(int N) {
        // k, k + 1, k + 2, ..., k + (i - 1)
        // N = k * i + (i - 1) * i / 2
        // N - (i - 1) * i / 2 = k * i
        int ans = 0;
        for (int i = 1; (i - 1) * i / 2 < N; i ++) {
            if ( (N - (i - 1) * i / 2) % i == 0) {
                ans ++;
            }
        }
        return ans;
    }
}