Cod sursa(job #149645)

Utilizator alex23alexandru andronache alex23 Data 5 martie 2008 22:20:49
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <math.h>


 int main()
  {FILE *f;
   int n,i,j,a[2000002],nr=0;

   f=fopen("ciur.in","r");
   fscanf(f,"%d",&n);
   fclose(f);

   for (i=2;i<=n;i++)
     if (i%2) a[i]=1;
        else  a[i]=0;

   j=3;
   while (j<=sqrt(n))
       { if (a[j]) {for (i=2;i<=n/j;i++) a[i*j]=0;
                    nr++;
                    }
         j=j+2;
         }
   for (i=sqrt(n)+1;i<=n;i++)
       if (a[i]) nr++;

   f=fopen("ciur.out","w");
   if (n<=1000) fprintf(f,"%d",nr);
   fprintf(f,"\n");
   for (i=3;i<=n;i++)
      if (a[i]) fprintf(f,"%d ",i);

   fclose(f);

   return 0;
   }