#include using namespace std; vector> prime_factorize(long long N) { // 答えを表す可変長配列 vector> res; // √N まで試し割っていく for (long long p = 2; p * p <= N; ++p) { // N が p で割り切れないならばスキップ if (N % p != 0) { continue; } // N の素因数 p に対する指数を求める int e = 0; while (N % p == 0) { // 指数を 1 増やす ++e; // N を p で割る N /= p; } // 答えに追加 res.emplace_back(p, e); } // 素数が最後に残ることがありうる if (N != 1) { res.emplace_back(N, 1); } return res; } int main() { int N; cin >> N; vector> pf = prime_factorize(N); long long ans = 0; for (auto [p, e] : pf) { ans += p * e; } cout << ans; }