prime factor(模拟枚举)

该C++代码描述了一个程序,输入一个整数n,通过循环和条件判断找到其所有因数,并按从小到大的顺序输出。程序使用了`vll`容器存储因数并进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Background

给出一个整数n,将n的因数从小到大输出

Description

第一行给出一个整数TMATH:0:(1≤n≤1e12)TMATH:0:(1≤n≤1e12),代表要进行因数分解的的整数

保证

Input

从小到大输出n的因数,每一个n的因数占一行

Sample 1

InputcopyOutputcopy
3
1
2
3
1
1 2
1 3

#include <bits/stdc++.h>
#define endl '\n'
#define buff ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef vector<ll> vll;
typedef vector<pair<ll,ll>> vpll;
const ll MAX_INT=0x3f3f3f3f;
const ll MAX_LL=0x3f3f3f3f3f3f3f3f;
const ll CF=2e5+9;
const ll mod=1e9+7;
int main()
{
    int T;
    cin >> T;
    while(T--)
    {
        ll n;
        cin >> n;
        vll factors;
        for(ll i = 1; i * i <= n; ++i)
        {
            if (n % i == 0)
            {
                factors.push_back(i);
                if(i != n / i)
                {
                    factors.push_back(n / i);
                }
            }
        }
        sort(factors.begin(), factors.end());
        for(int i = 0; i < factors.size(); ++i)
        {
            cout << factors[i];
            if(i != factors.size() - 1)
            {
                cout << " ";
            }
        }
        cout << endl;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值