Files
contests/atcoder/beginner_contests/250/d.cpp

66 lines
1.1 KiB
C++

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
vector<ull> primes(ull maxPrime){
vector<bool> 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<ull> 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;
}