Cod sursa(job #386197)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 24 ianuarie 2010 12:26:01
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include<fstream>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
int n,i,j,k,p,c,v[2000001];
char x[2000001];
int main()
{
	f>>n;
	v[1]=2;i=1;j=1;x[1]=1;
	while(2*i+1<=n)
	{j++;
	v[j]=2*i+1;x[j]='1';
	i++;}
	k=2;
	while(p*p<=n)
	{p=v[k];
	for(i=1;i<=j;i++)
		if(v[i]%p==0)
		x[i]='0';
	c=0;
	for(i=1;i<=j;i++)
		if(x[i]=='1')
		{c++;
		x[c]='1';
		v[c]=v[i];}
    j=c;
	k++;}
	g<<j;
	f.close(); g.close();
	return 0;
}