Cod sursa(job #398692)

Utilizator wscsprint3rIrimescu Stefan wscsprint3r Data 19 februarie 2010 10:30:41
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
//
#include<stdio.h>
FILE *f=fopen("ciur.in","r"), *g=fopen("ciur.out","w");
bool v[2000001];
long k,i,j,pozp,p,n,ctr;

int main()
{
	fscanf(f,"%ld", &n);
	
	for(i=2;i<=n;i++)
		v[i]=i;
	
	p=2;
	pozp=2;
	
	while(ctr<n)
	{

		for(j=p*p;j<=n;j++)
			if(v[j]%p==0)
				v[j]=0;
			
			pozp++;
			while(v[pozp]==0)
				pozp++;
			
		p=v[pozp];
		ctr=p*p;
	}
	
	
k=0;
for(i=1;i<=n;i++)
	if(v[i]!=0)
		k++;
	
	fprintf(g,"%ld",k);
	
	fclose(f);
	fclose(g);
	return 0;
	
}