Cod sursa(job #146777)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 2 martie 2008 08:49:38
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream.h>   
char prime[2000010];
int n,num=0;   
void gen_prime() {   
  
    for (long d = 3; d <=  2000010; d+=2) {
    prime[d - 1] = 1;
    if (prime[d] == 0)
    {
	num++;
	for (long v= 2; v*d <= 2000010; v++)
	prime[d * v] = 1;
        }   
    }   
    prime[2] = 0;   
}   
  
int main ()   
{   
    ifstream fin ("ciur.in");   
    ofstream fout ("ciur.out");   
    fin>>n;   
   int sol[1100],nr=0;
   gen_prime();   
   for (int i=n;i>1;i--)   
      if ((prime[i]==0 && i%2==1) ||(i==2))
      {
	 sol[nr++]=i;
	 if (nr>999)
	     break;
	  }
      nr--;
   fout<<num<<"\n";
   while (nr>-1)   
   {   
      fout<<sol[nr]<<" ";   
      nr--;   
   }   
   fin.close();   
   fout.close();   
   return 0;   
}