Cod sursa(job #797501)
| Utilizator | Data | 14 octombrie 2012 11:09:22 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include<cstdio>
using namespace std;
int n,c,i,j,k,m,ciur(int);
char p[1000010];
int main ()
{
FILE *r = fopen("ciur.in", "r");
FILE *w = fopen("ciur.out", "w");
fscanf(r, "%d", &n);
fprintf(w, "%d",ciur(n));
return 0;
}
int ciur(int n)
{
if(n==2)return 1;
if(n==3)return 2;
c=1;m=n/2;
for(i=3,k=1;i*i<=n;i+=2,k++)
if(p[k]==0)
{
c++;
for(j=2*k*k+2*k;j<=m;j+=k)p[j]=1;
}
for(;k<=m;k++)
if(p[k]==0)c++;
return c;
}
