Submission

Status:
PPPx-PPP--

Score: 60

User: 17458

Problemset: แยกตัวประกอบ

Language: cpp

Time: 0.060 second

Submitted On: 2024-11-20 19:07:45

#include <bits/stdc++.h>
using namespace std;

const int MxN = 2e6;

map<int,int> factor;
queue<int> q;
vector<bool> is_prime(MxN,true);
int main() {
    float n; cin >> n;
    //prime
    for (int i = 2;i <= MxN;i++) {
        if (is_prime[i]) {
            for (int j = i + i;j < MxN;j += i) is_prime[j] = false;
        }
    }

    int i = 2;
    while (n > 1) {
        if (is_prime[i]) {
            while (trunc(n / i) == (n/i)) {
                factor[i]++;
                if (factor[i] == 1) q.push(i);
                n /= i;
            }
        }
        i++;
    }

    while (!q.empty()) {
        int num = q.front(); q.pop();
        cout << num << '^' << factor[num] << ' ';
    }
}