代码实现:
cpp
#include<iostream>
using namespace std;
#include<vector>
void check(int x)
{
vector<int> v;
for(int i = 1;i<= x/i;i++)
{
if(x%i == 0)
{
cout << i<<" ";
v.push_back(i);
}
}
for(int i = v.size()-1;i>=0;i--)
{
if(x/v[i] == v[i]) continue;
cout << x/v[i]<<" ";
}
cout <<endl;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
scanf("%d",&x);
check(x);
}
return 0;
}
注意:约数只需要枚举到 ,对应的大于
约数直接算出来,相同约数只取一个