Cod sursa(job #973277)

Utilizator horia43Stancu horia43 Data 13 iulie 2013 21:34:51
Problema Ciurul lui Eratosthenes Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
/*
Dandu-se un numar natural N, sa se determine numarul numerelor prime mai mici sau egale cu N.

Date de intrare
Fisierul de intrare ciur.in contine o singura linie pe care se afla numarul N.

Date de iesire
In fisierul de iesire ciur.out se va scrie pe prima linie raspunsul cerut.

Restrictii
2 <= N <= 2 000 000
*/
#include<stdio.h>
#include<math.h>
FILE * Fin,*Fout;
bool ciur1( int i, int n, bool a[2000000])
{
	int j=i;
	while(i<=n)
	{
		i+=j;
		a[i]=false;
		
	}
}
int main ()
{
	Fin=fopen("ciur.in","r"); Fout=fopen("ciur.out","w");
	int n,i,c=0;
	bool a[2000000];
	fscanf(Fin,"%d",&n);
	for(i=0;i<=n;++i)
		a[i]=true;
	for(i=2;i<=n;++i)
	{
		if(a[i]==false)
			continue;
		ciur1(i,n,a);
		if(a[i]==true)
		{
			//printf("%d ",i);
			c++;
		}
	}
	fprintf(Fout,"%d",c);
	fclose(Fin);
	fclose(Fout);
	return 0;
}