Cod sursa(job #2376827)
Utilizator | Data | 8 martie 2019 17:58:17 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <fstream>
#include <bitset>
using namespace std;
int n, i, j, sol;
bool f[2000001];
int main () {
ifstream fin ("ciur.in");
ofstream fout("ciur.out");
fin >> n;
sol = 1;
for (i=1; ((i*i)<<1)+(i<<1)<=n; i++){
if (f[i] == 0){
for (j=((i*i)<<1)+(i<<1); (j>>1)+1<=n; j+=(i<<1)+1){
f[j] = 1;
}
}
}
for (i=1; 2*i+1<=n; i++){
if (f[i] == 0)
sol++;
}
fout << sol;
return 0;
}