AOJ 2197 - Sum of Consecutive Integers

求める数をn, 連続する整数の最小値をm, 連続する個数をkとすると, m = \frac{2n-k^{2}+k}{2k}が成り立つはずです.
あとはmが整数となるか調べるだけです.

#include<iostream>

int main(){
	int n;
	while(std::cin >> n, n){
		int res = 0;
		for(int k=2;k<50;k++){
			int child = 2*n - k*k + k;
			if(child > 0 && child % (2 * k) == 0){
				res++;
			}
		}
		std::cout << res << std::endl;
	}
}