#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";
}