#include <iostream>
#include<math.h>
using namespace std;
long non(long n)
{ long sum=0;
if(n==1)
return 1;
for(int i=1;i*i<=n;i++)
{
if(n%i==0&&i*i!=n)
sum=sum+2;
if(i*i==n)
sum=sum+1;
}
return sum;
}
int main() {
long n;
long ary[1000];
while (cin >> n) { // 注意 while 处理多个 case
for(long i=0;i<n;i++)
{
cin>>ary[i];
}
for(int i=0;i<n;i++)
{
cout<<non(ary[i])<<endl;
}
}
}
// 64 位输出请用 printf("%lld")
如果x是n的约数,n/x必定也是x的约数,故根号n以前每找到一个约数等于找到两个。x从1开始,直到根号n。如果根号n为整数,则只提供一个约数,大于根号n的约数在前面已经被计算过

京公网安备 11010502036488号