#include <bits/stdc++.h>
using namespace std;
vector<int> en_kucuk_asal_carpan_listesi(long long n) {
vector<int> en_kucuk_asal_carpan(n + 1);
for (int i = 2; i <= n; i++) {
if (en_kucuk_asal_carpan[i])
continue;
en_kucuk_asal_carpan[i] = i;
for (int k = 2 * i; k <= n; k += i) {
if (!en_kucuk_asal_carpan[k])
en_kucuk_asal_carpan[k] = i;
}
}
return en_kucuk_asal_carpan;
}
vector<pair<int, int>> carpanlara_ayir(int n, const vector<int> &en_kucuk_asal_carpan) {
vector<pair<int, int>> asal_carpan_kuvvetleri;
while (n > 1) {
int asal_carpan = en_kucuk_asal_carpan[n];
int us = 0;
while (n % asal_carpan == 0) {
n /= asal_carpan;
us++;
}
asal_carpan_kuvvetleri.push_back({asal_carpan, us});
}
return asal_carpan_kuvvetleri;
}
int main() {
const int n = 1e8;
auto en_kucuk_asal_carpan = en_kucuk_asal_carpan_listesi(n);
const int sorgu_sayisi = 4e6;
int toplam_asal_carpan_sayisi = 0; // Derleyici optimizasyonlarının önüne geçmek için.
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
for (int ornek = 0; ornek < sorgu_sayisi; ornek++) {
int sayi = uniform_int_distribution<int>(1, n)(rng);
auto asal_carpan_kuvvetleri = carpanlara_ayir(sayi, en_kucuk_asal_carpan);
for (auto &[asal, us] : asal_carpan_kuvvetleri)
toplam_asal_carpan_sayisi += us;
}
cout << toplam_asal_carpan_sayisi << "\n";
}