Cod sursa(job #189768)

Utilizator TudorRTudor Radacineananu TudorR Data 18 mai 2008 10:06:09
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>
#define nmax 2000010

bool marcat[nmax];

int ciur(int n){
	int i,j;
	for(j=4 ; j<=n ; j+=2)//marchez numerele pare ca nefiind prime
		marcat[j]=true;
	
	for (i=3 ; i*i<=n ; i+=2)//iau posibile numere prime impare
		for(j=i*i ; j<=n ; j+=i)
			marcat[j]=true;
	
	int nr=1;//nr=nr de numere prime si stiu ca 2 este prim
	
	for (i=3 ; i<=n ; i+=2)
		if(!marcat[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;
}