Cod sursa(job #146838)

Utilizator sima_cotizoSima Cotizo sima_cotizo Data 2 martie 2008 11:29:20
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>
#include <cstring>

char *P;
long printed;

long ciur(long n) {
	P = new char[n+10]; 
	memset(P, 0, sizeof(char)*(n+10));
	long i,j,nr=0;

	for (i=2; i<=n; ++i)
		if ( P[i]==0 ) {
			for (j=2*i; j<=n; j+=i)
				P[j] = 1;
			++nr;
		}
	return nr;
}

void print(long i) {
	if ( i==1 || printed==0 )
		return ;
	if ( P[i]==0 ) {
		--printed;
		print(i-1);
		printf("%ld ",i);
	} else
		print(i-1);
}

int main() {

	long n;
	fscanf(fopen("ciur.in", "r"), "%ld",&n);

	freopen("ciur.out", "w", stdout);
	printf("%ld\n", ciur(n));
	printed = 1000;
	print(n);
	printf("\n");
	return 0;
}