对于一个大于1正整数n可以分解质因数:n = p1^a1*p2^a2*......pk^ak,则n的正约数的个数就是 :(a1+1)*(a2+1)*......*(ak+1)
其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。
#include<iostream>
using namespace std;
typedef long long int ll;
int main(){
int T;
scanf("%d",&T);
while(T--){
ll n;
cin>>n;
n=n*n;
ll sum = 1;
for(ll i = 2; i*i <= n; i++){
int cou = 0;
if(n%i==0){
cou = 1;
n /= i;
while(n%i==0){
cou++;
n /= i;
}
}
if(cou != 0){
sum = sum*(cou+1);
}
}
if(n != 1){
sum = sum*2;//剩下一个质数(1+1)
}
if(sum==1 && n==1){
sum = 1;
}
cout<<(sum-1)/2+1<<endl;
}
return 0;
}