莫欺少年穷,修仙之旅在这开始—>算法基础课题解
思路:
与试除法判定质数一样,约数都是成对出现,故只需判定约数中的较小数即可
可参考: 试除法判定质数
#include<bits/stdc++.h>
using namespace std;
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()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
auto res=get_divisors(x);
for(auto t : res) cout<<t<<' ';
cout<<endl;
}
return 0;
}
兄弟,牛逼
hhh