Cod sursa(job #546296)

Utilizator CipaFlorescu Ciprian Cipa Data 4 martie 2011 18:56:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include<vector>
#include<cstdio>
#include<cmath>
using namespace std;

vector<bool> sir;

void mark(int i, int n)
{
	int j = i * i;
	while(j<=n)
	{
		sir[j] = 0;
		j += i;
	}
}

int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	
	int n;
	scanf("%d",&n);
	
	sir.resize(n+5,1);
	int i=2;
	int k=sqrt(n);
	while(i<=k)
	{
		if(sir[i] == 1)
			mark(i,n);
		i++;
	}
	
	int count = 0;
	for(int i=2;i<=n;i++)
		if(sir[i]==1)
			count ++;
	
	printf("%d\n",count);
			
		
	
}