求所有约数
与之前的判断质数框架一样,有两个关键点
1:在添加元素的时候要去重(16 = 4 / 4,只保留一个4)
2:添加完之后要注意重新排序
时间复杂度
O(nlgn)
参考文献
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
void get_divisors(int x){
vector<int> res;
for(int i = 1;i <= x / i;++i){
if(x % i == 0){
res.push_back(i);
if(i != x /i)
res.push_back(x / i);
}
}
sort(res.begin(),res.end());
for(auto iter : res){
cout << iter << " ";
}
cout << endl;
}
int main(){
int n;
cin >> n;
while(n--){
int x;
cin >> x;
get_divisors(x);
}
return 0;
}