我正在解决一个问题,它需要得到偶数和奇数除数之间的差异,我需要使用 sqrt() 函数,因为数字的限制是 10^9,所以循环整数不是超过时间限制的选项原因。
这是我试图制作的一个功能,但它不能在所有数字上完美运行。
前任。4 和 48745。
案例4:应该输出2个偶数除数{2,4}和1个奇数除数{1}——下面的函数输出3偶数1奇数
案例 48745 :应该输出 0 个偶数除数和 4 个奇数除数 {1,5,9749,48745}——下面的函数输出 2 个偶数 2 个奇数
int di(int x)
{
int even=0,odd=0;
for(int i=1;i<=sqrt(x);i++)
{
if(x%i==0)
{
if(i%2)
odd++;
else
even++;
if(x/i %2==0 && x/i!=i)
even++;
else if(x/i!=i)
odd++;
}
}
return even-odd;
}