Cod sursa(job #1800787)
| Utilizator | Data | 8 noiembrie 2016 08:48:49 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciur.in");
ofstream fout("ciur.out");
int ciur(int n){
vector<bool> vizitat(n/2+1,false);
for(int i=1;((i*i)<<1)+(i<<1) <= n ; i+= 1)
if(!vizitat[i])
for(int j=((i*i)<<1)+(i<<1);(j<<1)+1 <= n ; j += (i<<1)+1)
vizitat[i]=true;
int cnt=1;
for(int i=1;2*i+1<=n;i+=1)
if(!vizitat[i])
cnt+=1;
return cnt;
}
int main()
{
int n;
fin>>n;
fout<<ciur(n);
return 0;
}
