试除法求约数

题目描述

给定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
 
#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;
}

 

posted @ 2022-03-01 20:11  ora12321  阅读(13)  评论(0)    收藏  举报