-
题目描述:
-
输入n个整数,依次输出每个数的约数的个数
-
输入:
-
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
-
输出:
-
可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。-
样例输入:
-
5 1 3 4 6 12
-
样例输出:
-
1 2 3 4 6
#include<iostream> #include<stdio.h> using namespace std; int ko[32005]; int num[32005]; int main() { int n,data,j,i; for(int i=1;i<=32000;i++) ko[i]=1; ko[0]=0; ko[1]=0; int cnt=0; for(i=2;i<=32000;i++) if(ko[i]==1) { num[++cnt]=i; for(j=i*i;j<=32000;j+=i) ko[j]=0; } while(scanf("%d",&n)) { if(n==0) break; while(n--) { scanf("%d",&data); int ans=1; for(j=1;j<=cnt;j++) { if(data<num[j]) break; int gh=1; while(data%num[j]==0) { gh=gh+1; data=data/num[j]; } ans=ans*gh; } if(data>32000) ans=ans*2; printf("%d\n",ans); } } return 0; }
-