试除法求约数
约数成对出现,从小到大枚举所有约数对中小的那一个 O(sqrt(n))
vector数组遍历
C++ 代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int n;
int a[105];
vector<int> get_divisors(int n)
{
vector<int> res;
for(int i=1;i<=n/i;i++)//约数一定是成对出现的
{
if(n%i==0){
res.push_back(i);
if(i != n/i )res.push_back(n/i);
}
}
sort(res.begin(),res.end());
return res;
}
int main()
{
cin>>n;
while(n--){
int x;
cin>>x;
vector<int> res = get_divisors(x);
for(auto t:res)cout<<t<<" ";//遍历vector
puts("");
}
return 0;
}