一个正整数可以分解成一个或多个数组的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。
输入包括多组数据。
每组数据仅有一个整数n (2≤n≤100000)。
输入示例
30
26
20
输出示例
3
2
2
题目的意思是把一个数拆成乘式,然后返回这个乘式里有多少个不同的因子。
#include <cstdio>
#include <cstring>
int main (){
int f[100010]={0};
int i,j;
int n;
for(i=2;i<=100000;i++){
if (!f[i]){
f[i]=1;
for(j=i+i;j<=100000;j+=i)
f[j]++;
}
}
while(~scanf("%d",&n))
printf("%d\n",f[n]);
return 0;
}