Cod sursa(job #797505)

Utilizator UMihneaUngureanu Mihnea UMihnea Data 14 octombrie 2012 11:20:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 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);
    if(n%2==0)n--;
	fprintf(w, "%d",ciur(n));

	return 0;
}
int ciur(int n)
{
    if(n==1)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+=i)p[j]=1;
	    }
	for(;k<=m;k++)
        if(p[k]==0)c++;
    return c;
}