#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];
};
cout << "[1, " << n << "] araligindaki asal sayisi: " << araliktaki_asal_sayisi(1, n) << "\n";
// https://c...content-available-to-author-only...s.com/blog/entry/61587
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
for (int ornek = 0; ornek < 5; ornek++) {
int l = uniform_int_distribution<int>(1, n)(rng);
int r = uniform_int_distribution<int>(l, n)(rng);
cout << "[" << l << ", " << r << "] araligindaki asal sayisi: " << araliktaki_asal_sayisi(l, r) << "\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IGludCBuID0gMWU4OwogICAgdmVjdG9yPGJvb2w+IGFzYWxfbWkobiArIDEsIDEpOwogICAgdmVjdG9yPGludD4gYXNhbF9zYXlpc2kobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgYXNhbF9zYXlpc2lbaV0gPSBhc2FsX3NheWlzaVtpIC0gMV0gKyBhc2FsX21pW2ldOwogICAgICAgIGlmICghYXNhbF9taVtpXSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgZm9yIChpbnQgayA9IDIgKiBpOyBrIDw9IG47IGsgKz0gaSkKICAgICAgICAgICAgYXNhbF9taVtrXSA9IGZhbHNlOwogICAgfQoKICAgIGF1dG8gYXJhbGlrdGFraV9hc2FsX3NheWlzaSA9IFsmXShpbnQgbCwgaW50IHIpIHsKICAgICAgICBsID0gbWF4KGwsIDEpOwogICAgICAgIHJldHVybiBhc2FsX3NheWlzaVtyXSAtIGFzYWxfc2F5aXNpW2wgLSAxXTsKICAgIH07CgogICAgY291dCA8PCAiWzEsICIgPDwgbiA8PCAiXSBhcmFsaWdpbmRha2kgYXNhbCBzYXlpc2k6ICIgPDwgYXJhbGlrdGFraV9hc2FsX3NheWlzaSgxLCBuKSA8PCAiXG4iOwoKICAgIC8vIGh0dHBzOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucy5jb20vYmxvZy9lbnRyeS82MTU4NwogICAgbXQxOTkzNyBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKICAgIGZvciAoaW50IG9ybmVrID0gMDsgb3JuZWsgPCA1OyBvcm5laysrKSB7CiAgICAgICAgaW50IGwgPSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50PigxLCBuKShybmcpOwogICAgICAgIGludCByID0gdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4obCwgbikocm5nKTsKICAgICAgICBjb3V0IDw8ICJbIiA8PCBsIDw8ICIsICIgPDwgciA8PCAiXSBhcmFsaWdpbmRha2kgYXNhbCBzYXlpc2k6ICIgPDwgYXJhbGlrdGFraV9hc2FsX3NheWlzaShsLCByKSA8PCAiXG4iOwogICAgfQp9
[1, 100000000] araligindaki asal sayisi: 5761455
[66276626, 91492887] araligindaki asal sayisi: 1387051
[25591459, 77504119] araligindaki asal sayisi: 2931722
[59025092, 82024796] araligindaki asal sayisi: 1273097
[83396152, 98852422] araligindaki asal sayisi: 843300
[45417396, 84266839] araligindaki asal sayisi: 2161677