其实没那么难,只要每次除掉质数之后判断值是否为质数就可以了

虽然时间也不可观,但是总还是能过的

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
long long int num;
vector<long long int> prime;
bool isprime(int n) {
    for (int i = 2; i <= sqrt(n); ++i) {
        if (!(n % i)) {
            return false;
        }
    }
    return true;
}
void createMap(void) {
    for (long long int i = 2; i <= sqrt(num); ++i) {
        if (isprime(i)) {
            prime.push_back(i);
        }
    }
}
void solve(int n) {
    if (isprime(n) || n == 1) {
        cout << n;
        return;
    }
    else {
        for (auto value : prime) {
            if (!(n % value)) {
                cout << value << ' ';
                n /= value;
                solve(n);
                break;
            }
        }
    }
}
int main(void) {
    cin >> num;
    createMap();
    solve(num);
    return 0;
}