题目描述:
输入 n 个整数,依次输出每个数的约数的个数。
输入格式
第一行包含整数 n。
第二行包含 n 个整数 ai。
输出格式
共 n 行,按顺序每行输出一个给定整数的约数的个数。
数据范围
1≤n≤1000,
 1≤ai≤10^9
输入样例:
5
1 3 4 6 12
 
输出样例:
1
2
3
4
6 
解题思路:
1.枚举每个数,暴力求取每个数的约数;
2.根据n与其质因数的个数关系求取;

参考代码:
###暴力
```
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int solve(int x)
{
    int res =0;
    for(int i=1;i*i<=x;i++)
    {
        if(x%i==0)
        {
            res++;
            if(i!=x/i) res++;
        }
    }
    return res;
}
int main()
{
    scanf("%d", &n);
    while (n -- )
    {
        int x;
        cin >> x;
        cout<<solve(x)<<endl;
    }
    return 0;
}
```
###质因数分解法
```
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int solve(int x)
{
    int res = 1;
    for(int i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            int s = 0;
            while(x%i==0) x/=i,s++;
            res *= (s+1);
        }
    }
    
    if(x>1) res *= 2;
    return res;
}
int main()
{
    scanf("%d", &n);
    while (n -- )
    {
        int x;
        cin >> x;
        cout<<solve(x)<<endl;
    }
    return 0;
}
``` 










![P8749 [蓝桥杯 2021 省 B] 杨辉三角形](https://img-blog.csdnimg.cn/direct/1dbb32b2758a443c8d93343ee5562579.jpeg#pic_center)








