#include <iostream>
const int NMIN = 10000000, NMAX = 100000000;
char notprime[NMAX]; // Mark the composite numbers
int main() {
// Sieve all primes
// We only need to sieve up to sqrt(MAXN)
for (int i = 2; i*i <= NMAX; ++i) {
if (notprime[i]) continue;
// Mark all multiples starting with i^2
for (int j = i*i; j <= NMAX; j += i) notprime [j] = 1;
}
// Count primes from NMIN to NMAX
int cntprimes = 0;
for (int i = NMIN; i <= NMAX; ++i) {
if (!notprime[i]) ++cntprimes;
}
std::cout << cntprimes << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY29uc3QgaW50IE5NSU4gPSAxMDAwMDAwMCwgTk1BWCA9IDEwMDAwMDAwMDsKY2hhciBub3RwcmltZVtOTUFYXTsgLy8gTWFyayB0aGUgY29tcG9zaXRlIG51bWJlcnMKCmludCBtYWluKCkgewogIC8vIFNpZXZlIGFsbCBwcmltZXMKICAvLyBXZSBvbmx5IG5lZWQgdG8gc2lldmUgdXAgdG8gc3FydChNQVhOKQogIGZvciAoaW50IGkgPSAyOyBpKmkgPD0gTk1BWDsgKytpKSB7CiAgICBpZiAobm90cHJpbWVbaV0pIGNvbnRpbnVlOwoKICAgIC8vIE1hcmsgYWxsIG11bHRpcGxlcyBzdGFydGluZyB3aXRoIGleMgogICAgZm9yIChpbnQgaiA9IGkqaTsgaiA8PSBOTUFYOyBqICs9IGkpIG5vdHByaW1lIFtqXSA9IDE7CiAgfQoKICAvLyBDb3VudCBwcmltZXMgZnJvbSBOTUlOIHRvIE5NQVgKICBpbnQgY250cHJpbWVzID0gMDsKICBmb3IgKGludCBpID0gTk1JTjsgaSA8PSBOTUFYOyArK2kpIHsKICAgIGlmICghbm90cHJpbWVbaV0pICsrY250cHJpbWVzOwogIH0KCiAgc3RkOjpjb3V0IDw8IGNudHByaW1lcyA8PCAiXG4iOwogIHJldHVybiAwOwp9