由于数字n的因子是在n的平方根两侧分布,只需对数n开方即可,但是应注意n的平方根为整数的时候的情况。
代码如下:`
#include<stdio.h>
#include<math.h>
int slove(int n)
{
int i,flag=0;
int sum;
for(i=1;i<=sqrt(n);i++) /*对数字n开平方*/
{
flag=0;
if(i*i==n) /*开平方为整数时只能算一个因子*/
{
sum++;
flag=1;
}
if(flag==0&&n%i==0)
{
sum+=2;
}
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",slove(n));
return 0;
}