Cod sursa(job #1097191)
| Utilizator | Data | 3 februarie 2014 10:26:35 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.7 kb |
#include <cstdio>
#include <bitset>
#define Nmax 2000099
#define Pmax 200000
using namespace std;
int N,nr;//,P[Pmax];
bitset < Nmax > v;
void Ciur(int N)
{
int i;
++nr;
//P[++P[0]]=2;
for(i=3;i*i<=N;i+=2)
if(!v[i])
{
//P[++P[0]]=i;
++nr;
if(1LL*i*i<=1LL*N)
for(int j=i*i;j<=N;j+=2*i)
if(!v[j])v[j]=1;
}
for(; i<=N ; i+=2)
if(!v[i])++nr;//v[i]=1,P[++P[0]]=i;;
}
int main()
{
freopen("ciur.in", "rt", stdin);
freopen("ciur.out", "wt", stdout);
scanf("%d",&N);
Ciur(N);
printf("%d\n",nr);
return 0;
}
