#include using namespace std; typedef unsigned long long ull; vector primes(ull maxPrime){ vector p(maxPrime + 1, true); for(ull i = 2; i <= sqrt(maxPrime + 1); ++i){ if(p[i]){ for(ull j = i * 2; j < maxPrime + 1; j += i){ p[j] = false; } } } vector result; for(ull i = 2; i < maxPrime + 1; ++i){ if(p[i]){ result.push_back(i); } } return result; } int main(){ ios::sync_with_stdio(0); cin.tie(0); ull n; cin >> n; ull topPrime = ceil(cbrt(ceil(n / 2))); auto ps = primes(topPrime); ull result = 0; if(ps.size() < 2){ cout << result << endl; cout << flush; return 0; } for(size_t i = 1; i < ps.size(); ++i){ ull q = ps[i]; for(size_t j = 0; j < i; ++j){ ull p = ps[j]; ull k = p * q * q * q; if(k > n){ break; } result++; } } cout << result << endl; cout << flush; return 0; }