本文主要是介绍蓝桥杯每日一题:约数个数(质因数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
输入 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;
}
```
这篇关于蓝桥杯每日一题:约数个数(质因数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!