数论 因数遍历


include

#include <vector>
#include <algorithm>  // 用于排序 
using namespace std;

vector<long long> get_factors(long long n) {
    vector<long long> factors;

    for (long long 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());
    return factors;
}

int main() {
    long long n;
    cin >> n;
    auto factors = get_factors(n);
    for (auto x : factors) {
        cout << x << " ";
    }
    return 0;
}