试除法求约数
题目描述
给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。
输入
第一行包含整数n。
接下来n行,每行包含一个整数ai。
输出
输出共n行,其中第 i 行输出第 i 个整数ai的所有约数。
样例输入 Copy
2
6
8
样例输出 Copy
1 2 3 6
1 2 4 8
提示
1 ≤ n ≤ 100
2 ≤ ai ≤ 2e9
2 ≤ ai ≤ 2e9
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef vector<int> ve;
typedef long long LL;
ve is_p(LL x)
{
ve st;
for (int i = 1; i <= x / i; i++)
{
if (x % i == 0)
{
st.push_back(i);
if (i != x / i) st.push_back(x / i);
}
}
sort(st.begin(), st.end());
return st;
}
int main()
{
int n;
cin >> n;
while (n --)
{
LL t;
cin >> t;
auto m = is_p(t);
for (auto i : m) cout << i << " ";
puts("");
}
return 0;
}

浙公网安备 33010602011771号