Cod sursa(job #145230)

Utilizator HoriaClementHoriaC HoriaClement Data 28 februarie 2008 16:50:02
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>   
  
int N, n, sol[1024], cnt;   
char prim[2000005];   
  
int main(void)   
{   
    int i, j;   
       
    freopen("ciur.in", "r", stdin);   
    freopen("ciur.out", "w", stdout);   
  
    scanf("%d", &N);   
    for (i = 2; i <= N; ++i)   
        prim[i] = 1;   
    for (i = 2; i <= N; ++i)   
        if (prim[i])   
        {   
            ++n;   
            for (j = i+i; j <= N; j += i)   
                prim[j] = 0;   
        }   
       
    printf("%d\n", n);   
    for (i = N; i > 1; --i)   
        if (prim[i])   
        {   
            sol[++cnt] = i;   
            if (cnt == 1000)   
                break;   
        }   
  
    for (i = cnt; i; --i)   
        printf("%d ", sol[i]);   
    printf("\n");   
       
    return 0;   
}