#include <bits/stdc++.h>
using namespace std;
int main() {
const int n = 1e8;
vector<bool> asal_mi(n + 1, 1);
vector<int> asal_sayisi(n + 1);
for (int i = 2; i <= n; i++) {
asal_sayisi[i] = asal_sayisi[i - 1] + asal_mi[i];
if (!asal_mi[i])
continue;
for (int k = 2 * i; k <= n; k += i)
asal_mi[k] = false;
}
auto araliktaki_asal_sayisi = [&](int l, int r) {
l = max(l, 1);
return asal_sayisi[r] - asal_sayisi[l - 1];
};
const int sorgu_sayisi = 1e7;
long long cevaplarin_toplami = 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 l = uniform_int_distribution<int>(1, n)(rng);
int r = uniform_int_distribution<int>(l, n)(rng);
cevaplarin_toplami += araliktaki_asal_sayisi(l, r);
}
cout << cevaplarin_toplami << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IG1haW4oKSB7CiAgICBjb25zdCBpbnQgbiA9IDFlODsKICAgIHZlY3Rvcjxib29sPiBhc2FsX21pKG4gKyAxLCAxKTsKICAgIHZlY3RvcjxpbnQ+IGFzYWxfc2F5aXNpKG4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgewogICAgICAgIGFzYWxfc2F5aXNpW2ldID0gYXNhbF9zYXlpc2lbaSAtIDFdICsgYXNhbF9taVtpXTsKICAgICAgICBpZiAoIWFzYWxfbWlbaV0pCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGZvciAoaW50IGsgPSAyICogaTsgayA8PSBuOyBrICs9IGkpCiAgICAgICAgICAgIGFzYWxfbWlba10gPSBmYWxzZTsKICAgIH0KIAogICAgYXV0byBhcmFsaWt0YWtpX2FzYWxfc2F5aXNpID0gWyZdKGludCBsLCBpbnQgcikgewogICAgICAgIGwgPSBtYXgobCwgMSk7CiAgICAgICAgcmV0dXJuIGFzYWxfc2F5aXNpW3JdIC0gYXNhbF9zYXlpc2lbbCAtIDFdOwogICAgfTsKICAgIAogICAgY29uc3QgaW50IHNvcmd1X3NheWlzaSA9IDFlNzsKICAgIGxvbmcgbG9uZyBjZXZhcGxhcmluX3RvcGxhbWkgPSAwOyAvLyBEZXJsZXlpY2kgb3B0aW1pemFzeW9ubGFyxLFuxLFuIMO2bsO8bmUgZ2XDp21layBpw6dpbi4KICAgIG10MTk5Mzcgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CiAgICBmb3IgKGludCBvcm5layA9IDA7IG9ybmVrIDwgc29yZ3Vfc2F5aXNpOyBvcm5laysrKSB7CiAgICAgICAgaW50IGwgPSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50PigxLCBuKShybmcpOwogICAgICAgIGludCByID0gdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4obCwgbikocm5nKTsKICAgICAgICBjZXZhcGxhcmluX3RvcGxhbWkgKz0gYXJhbGlrdGFraV9hc2FsX3NheWlzaShsLCByKTsKICAgIH0KICAgIGNvdXQgPDwgY2V2YXBsYXJpbl90b3BsYW1pIDw8ICJcbiI7Cn0=