Cod sursa(job #216472)

Utilizator catalin93Catalin Ionescu catalin93 Data 24 octombrie 2008 18:14:42
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
#define true 1
#define false 0

const int N=2000005;

int x;
int c[N];//dupa prelucrare c[i]=true <=> i NU este prim

void ciur(int n)
{
	int i,j;
	for(i=2;i*i<=n;++i)
		if(c[i]==false)
			for(j=i*i;j<=n;j+=i)
				c[j]=true;
}

int numara(int n)
{
	int i,nr=0;
	for(i=2;i<=n;++i)
		if(!c[i])
			++nr;
	return nr;
}

int main()
{
	
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	
	scanf("%d",&x);
	ciur(x);
	printf("%d\n",numara(x));
	return 0;
}