Cod sursa(job #145861)

Utilizator alecmanAchim Ioan Alexandru alecman Data 29 februarie 2008 16:48:32
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<string.h>

#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");

char ciur[2000001];
int solutie[1001];

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]){
      for(long j=i+i;j<=n;j+=i)
        ciur[j]=1;
    }
  nrTotal=0;
  for(long i=n;i>1&&nrTotal!=1000;--i){
    if(!ciur[i]){
      solutie[nrTotal]=i;
      ++nrTotal;
    }
  }
  fprintf(fout, "%d\n", nrTotal);
  for(int i=nrTotal-1;i>=0;--i)
    fprintf(fout, "%d ", solutie[i]);
  fprintf(fout, "\n");
}