#include<iostream>
#include<cmath>
#include<map>
using namespace std;
map<long long, int> myMap;
long long numYueshu(long long n){
long long answer = 0;
for(int i = 1; i < sqrt(n); i++){
if(n%i==0){
answer++;
answer++;
}
}
if(sqrt(n)==int(sqrt(n))) answer++;
return answer;
}
int main(){
long long n;
int N;
cin>>N;
for(int i = 0; i < N; i++){
cin>>n;
cout<<numYueshu(n)<<endl;
}
return 0;
}直接暴力会超时,注意到每个数字如果有小于sqrt(n)的约数则必有一个大于sqrt(n)的约数,最后再判断sqrt(n)能否整除,能整除则+1。

京公网安备 11010502036488号