Cod sursa(job #145857)

Utilizator alecmanAchim Ioan Alexandru alecman Data 29 februarie 2008 16:43:47
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>

using namespace std;

#define INPUT "ciur.in"
#define OUTPUT "ciur.out"
#define CL(x) memset(x,0,sizeof(x));

FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");

vector<int> ciur(2000001);
vector<int> solutie;

long n;

inline void readValues(){fscanf(fin, "%ld", &n);}

void solveFunction();

void printSolution();

int main(){
  readValues();
  solveFunction();
  fclose(fin);
  fclose(fout);
  return 0;
}

void solveFunction(){
  int lastPoz,nrTotal;
  lastPoz=0;
  for(long i=2;i<=n;++i)
    if(!ciur[i]){
      lastPoz=i;
      for(long j=i+i;j<=n;j+=i)
        ciur[j]=1;
    }
  nrTotal=0;
  for(long i=lastPoz;i>1&&nrTotal!=1000;--i){
    if(!ciur[i]){
      solutie.push_back(i);
      ++nrTotal;
    }
  }
  reverse(solutie.begin(), solutie.end());
  fprintf(fout, "%d\n", nrTotal);
  for(int i=0;i<nrTotal;++i)
    fprintf(fout, "%d ", solutie[i]);
  fprintf(fout, "\n");
}