题目

一个数的质因子有哪些


解法1

点击查看代码
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

struct Factor {
    int prime;
    int count;
};

vector<Factor> primeFactors(long int N) {
    vector<Factor> factors;
    if (N == 1) {
        factors.push_back({1, 1});
        return factors;
    }
    for (int i = 2; i <= sqrt(N); ++i) {
        if (N % i == 0) {
            int cnt = 0;
            while (N % i == 0) {
                N /= i;
                cnt++;
            }
            factors.push_back({i, cnt});
        }
    }
    if (N > 1) {
        factors.push_back({N, 1});
    }
    return factors;
}

int main() {
    long int N;
    cin >> N;
    vector<Factor> factors = primeFactors(N);
    cout << N << "=";
    for (int i = 0; i < factors.size(); ++i) {
        if (i != 0) {
            cout << "*";
        }
        cout << factors[i].prime;
        if (factors[i].count > 1) {
            cout << "^" << factors[i].count;
        }
    }
    return 0;
}