Pagini recente » Cod sursa (job #690290) | Cod sursa (job #2146484) | Cod sursa (job #763181) | Cod sursa (job #3180487) | Cod sursa (job #900048)
Cod sursa(job #900048)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <deque>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
#define nmax 2000005
#define ll long long
int n;
bool viz[nmax];
vector<int> p;
void citeste(){
f >> n;
}
void bagaCiur(){
for(int i=2; i<nmax; ++i){
if (viz[i] == 1) continue;// i nu e numar prim
// i e prim
p.push_back(i);
for(int j=i*2; j<nmax; j+=i){
viz[j] = 1;
}
}
}
int cb(int val){
int st = -1; int dr = p.size();
while(dr-st>1){
int mij = (st + dr) / 2;
if ( p[mij] <= val ){
st = mij;
}else dr = mij;
}
return st+1;
}
void rezolva(){
bagaCiur();
//cout << cb(n) << "\n";
g << cb(n) << "\n";
}
int main(){
citeste();
rezolva();
f.close();
g.close();
return 0;
}