#include <iostream> #include<cmath> #include<cstring> using namespace std; //int prime[100000]; /* void judge(int n) { memset(prime,1,sizeof(prime)); for(int i=2;i<n;i++) { if(prime[i]) { for(int j=2*i;j<n;j++) { prime[j]=0;//素数的倍数全不是素数,可以达到接近o(n)的效率 //如果从1-n,1-根号n去挨个查,需要o(n^1.5) } } } } */ int main() { int n; /* judge(100000); int b[100000]; int j=0; for(int i=0;i<100000;i++) { if(prime[i])b[j++]=i; } int num=j; */ while (cin >> n) { //筛法求素数? int *data=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++)cin>>data[i]; for(int i=0;i<n;i++) { int count=0; for(int j=1;j<=sqrt(data[i]);j++) { //这里采用筛法求素数的思想 if(data[i]%j==0) { count+=2; if(j*j==data[i])count--; } } cout<<count<<endl; } } } // 64 位输出请用 printf("%lld")