输入正整数n,统计它的正因子的个数。n<=10^12直接枚举也不会超时应为如果i是n的约数,则n/i也是n的约数,i和n/i恰好有个不超过算术根。这样从1枚举好跟根号n即可。另一个细节是n太大,超过了Int类型的表示范围。其实,还有一种比Int更加大的类型,称为long long,它是-2^31~-2^31-1,比-10^19~10^19略小
,Int它的表示范围是-2^31~2^31-1,比-2*10^9~2*10^9-1略小,
#include <stdio.h>
int main(){
int i;
int n;
int number=0;
while(scanf("%d",&n)==1){
for(i=1;i<=n^(1/2);i++){
if(n%i==0){
number+=2;
}
}
printf("%d\n",number);
}
return 0;
}