一个小于根号n的约数必对应一个大于根号n的约数,因此时间复杂度可降为根号n

#include <iostream>
#include "cmath"
using namespace std;

int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        for(int i=0;i<n;i++){
            int a;
            cin>>a;
            int num=0;
            int bound=sqrt(a);
            for(int j=1;j<=bound;j++)
            {
                if(a%j==0) num+=2;
                if(j==sqrt(a)) num-=1;
            }
            // if(a==1) num=1;
            cout<<num<<endl;
        }
    }
}
// 64 位输出请用 printf("%lld")