Cod sursa(job #146474)

Utilizator vlad_olteanVladimir Oltean vlad_oltean Data 1 martie 2008 19:37:18
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;

int main()
{
    long long n;
    bool prim[2000001];
    int count=0,nr=1;
    long long sol[1000];
    long long i,j;

    ifstream fin("ciur.in");
    ofstream fout("ciur.out");
    fin>>n;
    
    prim[0]=0; prim[1]=0;
    for(i=2;i<=n;i++) prim[i]=1;
    for(i=4;i<=n;i+=2) prim[i]=0;    

    for(i=3;i<=n;i+=2)
         if(prim[i])
         {    for(j=i*i;j<=n;j+=i) prim[j]=0; // Elimin toti multiplii
              nr++;
         }
         
    for(i=n;i>=2;i--)
         if(prim[i])
         {    if(count==1000) break;
              sol[count]=i;
              count++;
         }
    
    fout<<nr<<endl;
    for(i=count-1;i>=0;i--)
         fout<<sol[i]<<' ';
    fout<<endl;
    fin.close();
    fout.close();
    return 0;
}