Cod sursa(job #236424)

Utilizator stocarulCosmin-Mihai Tutunaru stocarul Data 27 decembrie 2008 15:01:12
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
/*
CIURUL LUI ERATOSTHENES

Returneaza numarul de numere prime mai mici sau egale cu x.
*/
#include<stdio.h>
#define infile "ciur.in"
#define outfile "ciur.out"
#define xmax 2*1000*1000+1
char prim[xmax];
int x; //numarul pana la care numaram numarul de numere prime

int eratosthenes(char prim[], int x)
	{
	int i,j,k=0;
	for(i=2;i<x;i++)
		if(!prim[i]) //daca numarul este prim
			{
			k++; //memoram ca avem un nou numar prim;
			for(j=i+i;j<x;j+=i) prim[j]=1; //toate aceste numere nu mai sunt prime
			}
	return k;
	}

int main()
{
//deschidem fisiere
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);

scanf("%d",&x); //citim pe x
printf("%d\n",eratosthenes(prim,x)); //scriem numarul de numere prime

//inchidem fisiere
fclose(stdin);
fclose(stdout);
return 0;
}