#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long Int; typedef pair P; #define rep(i,x) for(Int i = 0; i < (Int)(x); i++) #define rrep(i,x) for(Int i = ((Int)(x) - 1); i >= 0; i--) #define _upgrade ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define all(x) (x).begin(), (x).end() #define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() ); #define pb push_back #define MX 100010 template void chmin(T1 &a, T2 b){if(a>b)a=b;} template void chmax(T1 &a, T2 b){if(a prime_n; bool prime[500001]; eratosthenes(){ fill(prime,prime+500001,true); //素数 prime[0] = prime[1] = false; for(int i = 2; i < 500001; i++){ if(prime[i] == true){ prime_n.push_back(i); for(int j = 2; i * j < 500001; j++){ prime[i*j] = false; } } } } }; int main(){ eratosthenes p; int n; cin >> n; int ans = 1; if(n == 1){ cout << 0 << endl; return 0; } for(int i = 1; i < p.prime_n.size() && p.prime_n[i] <= n; i++){ int r = 2 + p.prime_n[i]; int r_ = floor(sqrt(r)); if(r == r_*r_ && p.prime[r_]){ ans += 2; } } cout << ans << endl; return 0; }