Cod sursa(job #777128)

Utilizator voicuraduVoicu Radu voicuradu Data 11 august 2012 03:19:12
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
using namespace std;
const int NMAX = 2000010;
int n;
bool a[NMAX];
void read()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
}

void ciur()
{
	int i,j;
	a[0] = a[1] = true;
	for(i=2;i*i<=NMAX;i++)
	{
		if(!a[i])
			for(j=i*i;j<=NMAX;j+=i)
				a[j] = true;
	}
}

void rez()
{
	int i,num=1;

	ciur();

	if(n<2)
	{
		printf("0\n");
		return;
	}

	if(n==2)
	{
		printf("1\n");
		return;
	}
	else
		for(i=3;i<=n;i+=2)
			if(!a[i])
				num++;
	printf("%d\n",num);
}

int main()
{
	read();
	rez();
	return 0;
}