Cod sursa(job #190823)

Utilizator istiMihai Istudor isti Data 24 mai 2008 13:11:01
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include<stdio.h>
#define N 2000010
bool c[N];//c[i] va fi la sf false <=> i este prim
int ciur(int n){
	int nr=0;
	for(int i=2;i*i<=n;++i)
		if(!c[i])//daca i este prim
			for(int j=i*i;j<=n;j=j+i)//marcam cu true (nu sunt nr prime) toti multiplii lui i
				c[j]=true;

	for(int i=2;i<=n;i++){
		if(!c[i])
			nr++;
	}
	return nr;
}
int main()
{
	int n;
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
	printf("%d\n",ciur(n));
	return 0;
}