Submission

Status:
PPPxxPPPxx

Score: 60

User: 17458

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

Language: cpp

Time: 0.011 second

Submitted On: 2024-11-20 19:26:19

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

const int MxN = 1e6 + 1;

map<int,int> factor;
vector<bool> is_prime(MxN,true);
int main() {
    double 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 (roundf(n/i) == (n/i)) {
                factor[i]++;
                n /= i;
            }
        }
        i++;
    }

    for (auto p : factor) cout << p.first << '^' << p.second << ' ';
}