Cod sursa(job #2146673)
| Utilizator | Data | 28 februarie 2018 09:36:53 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include <fstream>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
const int bit = 32, log2 = 5;
const int nmax = 2000000/2/bit+8;
int prim[nmax], sol, n, i, j;
int main() {
f >> n;
for (i = 1; (i<<1) < n; i++)
if ((prim[i>>log2] & (1 << (i&(bit-1)) )) == 0) {
sol++;
for (j = ((i*i)<<1); (j<<1) < n; j += (i<<1)+1)
prim[i>>log2] |= (1 << (i&(bit-1)));
}
g << sol;
return 0;
}
