Cod sursa(job #144686)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 27 februarie 2008 21:02:12
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream.h>
char prime[2000010];
int n,num=0;
void gen_prime() {

    for (long d = 3; d <=  n; d+=2) {
	prime[d - 1] = 1;
	if (prime[d] == 0)
	{
	    num++;
	    for (long v= 2; v*d <= n; v++)
		prime[d * v] = 1;
	    }
    }
    prime[2] = 0;
}

int main ()
{
    ifstream fin ("ciur.in");
    ofstream fout ("ciur.out");
    fin>>n;
    for (int ii=4;ii<=n;ii+=2)
      prime[ii]=1;

    num++;
   int sol[1100],nr=0;
   gen_prime();
   for (int i=n;i>1;i--)
      if (prime[i]==0)
      {
	 sol[nr++]=i;
	 if (nr>1000)
	    break;
      }
      nr--;
   fout<<num<<"\n";
   while (nr>-1)
   {
      fout<<sol[nr]<<" ";
      nr--;
   }
   fin.close();
   fout.close();
   return 0;
}