Cod sursa(job #145838)

Utilizator wefgefAndrei Grigorean wefgef Data 29 februarie 2008 16:10:06
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;

int N;
vector<int> ret;
char prim[2000005];

int main() {
    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);
    
    scanf("%d", &N);
    
    for (int i = 2; i <= N; ++i)
        prim[i] = 1;
    
    for (int i = 2; i <= int(sqrt(N)); ++i)
        if (prim[i])
            for (int j = i; i*j <= N; ++j)
                prim[i*j] = 0;
                
    for (int i = N; i > 1 && int(ret.size()) < 1000; --i)
        if (prim[i]) ret.push_back(i);
    reverse(ret.begin(), ret.end());
    
    printf("%d\n", int(ret.size()));
    for (int i = 0; i < int(ret.size()); ++i)
        printf("%d ", ret[i]);
}