Cod sursa(job #699872)
| Utilizator | Data | 29 februarie 2012 21:45:19 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include <cstdio>
#include <bitset>
#define NMAX 2000005
using namespace std;
int main()
{
int N,primeCnt=0;
bitset<NMAX> ePrim;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
ePrim.set();
scanf("%d",&N);
for(int i=3;i<=N;i+=2)
{
if(ePrim[i])
{
primeCnt++;
for(int j=i*2;j<=N;j+=i)
ePrim.reset(j);
}
}
printf("%d",primeCnt+(N>=2?1:0));
return 0;
}