Cod sursa(job #144963)

Utilizator cos_minBondane Cosmin cos_min Data 28 februarie 2008 10:33:13
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <fstream>
using namespace std;

#define in "ciur.in"
#define out "ciur.out"
#define dim 2000001

int N;
int Nr[1001];
bool Sel[dim];

int main()
{
    memset(Sel,0,sizeof(Sel));
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d", &N);
    
    for ( int i = 2; i*i <= N; i++ )
    {
        if ( Sel[i] ) continue;
        for ( int j = 2; i*j <= N; j++ ) Sel[i*j] = 1;
    }
    
    int size = 0, total = 0;
    
    for ( int i = N; i >= 2; i-- )
    {
        if ( !Sel[i] ) 
        {
             total++;
             if ( size < 1000 ) Nr[++size] = i;
        }
    }
    
    printf("%d\n",total);
    for ( ; size; size-- )
        printf("%d ", Nr[size]);
}