Cod sursa(job #152219)

Utilizator QbyxEros Lorand Qbyx Data 9 martie 2008 11:09:30
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#define nmax 2000008

int p[nmax];
long int i, k, n, j, r[1002], h;

int main()
{
    freopen("ciur.in", "rt", stdin);
    freopen("ciur.out", "wt", stdout);

    scanf("%li", &n);
    for (i = 1; i <= n; ++i)
	p[i] = 1;

    for (i = 2; i <= n; ++i)
	if (p[i])
	{
	    ++h;
	    for (j = i + i; j <= n; j += i)
	    p[j] = 0;
	}

    for (i = n; i > 1 && k < 1001; --i)
	if (p[i])
	    r[++k] = i;

    printf("%li\n", h);

    for (i = k; i >= 1; --i)
	printf("%li ", r[i]);
}