Cod sursa(job #973278)

Utilizator horia43Stancu horia43 Data 13 iulie 2013 21:38:41
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 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;
	for(j=i+i;j<=n;j=j+i)
		a[j]=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]==true)
		{
			ciur1(i,n,a);
			c++;
		}
	}
	fprintf(Fout,"%d",c);
	fclose(Fin);
	fclose(Fout);
	return 0;
}