数是小于10000的如果比较大 需要进行一些优化
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
int p[10000] = {0};
int m[10000];
int a[10002];
int main()
{
int n ;
for(int i = 2; i < 10005; ++i)
for(int j = 2; j * i < 10005; ++j)
p[i * j] = 1;
int t = 0;
for(int i = 2; i < 10005; ++i) if(!p[i]) m[t++] = i;
while(~scanf("%d",&n)){
int ans = 1;
int i = 0;
while(n > 1){
t = 0;
while(n%m[i] == 0) ++t,n/=m[i];
ans *= t + 1;
++i;
}
printf("%d\n",ans - 1);
}
return 0;
}