题目描述
给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。
样例
输入
2
6
8
输出
1 2 3 6
1 2 4 8
试除法求约数
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> get_divisors(int x){
vector<int> res;
//一个数的约数也是成对出现的 只枚举较小的那个
for(int i = 1; i <= x / i; i ++){
if(x % i == 0){
// 如果i是其中的一个约数
res.push_back(i);
//判断边界如果相同只加入一个
if(i != x / i) res.push_back(x / i);
}
}
sort(res.begin(), res.end());
return res;
}
int main(){
int n;
cin >> n;
while(n --){
int x;
cin >> x;
auto res =get_divisors(x);
for(auto x : res) cout << x << ' ';
cout << endl;
}
return 0;
}