#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int main() {
    long long N;
    cin >> N;
    long long temp = N;
    vector<pair<long long, int>> factors;
    
    // Factor out 2
    int cnt = 0;
    while (temp % 2 == 0) {
        cnt++;
        temp /= 2;
    }
    if (cnt > 0) {
        factors.push_back(make_pair(2, cnt));
    }
    
    // Factor out odd numbers
    for (long long i = 3; i * i <= temp; i += 2) {
        cnt = 0;
        while (temp % i == 0) {
            cnt++;
            temp /= i;
        }
        if (cnt > 0) {
            factors.push_back(make_pair(i, cnt));
        }
    }
    
    // If remaining is prime
    if (temp > 1) {
        factors.push_back(make_pair(temp, 1));
    }
    
    // Output factorization
    bool first = true;
    for (auto &factor : factors) {
        if (!first) {
            cout << " * ";
        }
        first = false;
        if (factor.second == 1) {
            cout << factor.first;
        } else {
            cout << factor.first << "^" << factor.second;
        }
    }
    return 0;
}

1 条评论

  • 1

信息

ID
1785
时间
1000ms
内存
256MiB
难度
2
标签
递交数
66
已通过
3
上传者