Cod sursa(job #146875)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 2 martie 2008 12:41:23
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <math.h>

long n, sl, sol[1024], cnt, i, j;
char prim[2000010];

int main() {
	
	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);

	scanf("%ld", &n);
	for (i = 2; i <= n; ++i) {
		prim[i] = 1;
	}
	for (i = 2; i <= n; ++i) {
		if (prim[i]) {
			++sl;
			for (j = i * 2; j <= n; j += i) {
				prim[j] = 0;
			}
		}
	}
	
	printf("%ld\n", sl);
	for (i = n; i > 1; --i) {
		if (prim[i]) {
			sol[++cnt] = i;
			if (cnt == 1000) {
				break;
			}
		}
	}

	for (i = cnt; i; --i) {
		printf("%ld ", sol[i]);
	}
	printf("\n");
	
	return 0;
}