Cod sursa(job #146698)

Utilizator andrei_infoMirestean Andrei andrei_info Data 1 martie 2008 23:51:27
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream.h>
#include <string.h>

ifstream fin ("ciur.in");
ofstream fout("ciur.out");

#define MAX 2000000

int N, cnt;
char prim[MAX];

void solve()
{
	int i,j;
	memset(prim, 0x0F, sizeof(prim));
	prim[1] = 0;
	for (  i = 2; i<=N; i++)
		if ( prim[i] )
			for(cnt++, j = i + i; j<=N; j+=i)
				prim[j] = 0;
}

void afis()
{
	fout<<cnt<<"\n";
	int cc=0;
	for (int i = 2; i<=N ; i++)
		if ( prim[i] )
		{
			cc++;
			if ( cnt - cc <= 1000)
				fout<<i<<" ";

		};
}


int main()
{
	fin>>N;
	solve();
	afis();

	return 0;
}