Cod sursa(job #634038)
Utilizator | Data | 15 noiembrie 2011 15:26:22 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.39 kb |
#include<cstdio>
#include<bitset>
#include<vector>
using namespace std;
bitset<500000> a;
int i,j,k,n,m,s=1;
int main()
{
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&n);
if(n&1);else n--;
m=(n-1)/2;
for(i=1,j=3;j*j<=n;i++,j+=2)
if(a[i]==0)
for(k=(j*j-1)/2;k<=m;k+=j)
a[k]=1;
for(i=1;i<=m;i++)
if(!a[i])s++;
printf("%d",s);
return 0;
}