1.直接枚举,对于整数N, 只需从1枚举到 aqrt(N), 如果i是n的约数(N%i == 0), 那么对应的N/i也应该是n的约数,但是i = =N/i 这种情况除外(如N=64,i=8)
代码如下:
int GetDivisorNum(int N)
{
int i = 0, Count = 0;
for(i = 1; i <= sqrt(N); i++) //math.h
{
if(N%i == 0)
{
Count++;
if(N/i != i)//i = =N/i 这种情况除外
Count++;
}
}
return Count;
}
需要进一步确认以下几点:
1.对于大数据是否会超时?
2.如果正整数N超过int类型的表示范围,如果处理? (可以考虑longlong)