Cod sursa(job #145605)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 29 februarie 2008 00:32:26
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
# include <stdio.h>
# include <math.h>
FILE *f=fopen("ciur.in","r"),*g=fopen("ciur.out","w");
int P[2000000];
int main()
{
   long N,d,i,j;
   fscanf(f,"%ld",&N);
   fclose(f);
   for (i=1;i<=N;i++)
	P[i]=1;
   i=2;
   while(i<=sqrt(N)){
    while (P[i]==0)i++;
    d++;
    for (j=i;j<=N/i;j++)
	P[j*i]=0;
    i++;
   }
    d=0; j=2;
    for (i=2;i<=N;i++){
	  if (P[i]) d++;
	  if (d==1000) j=i;
	  }
    fprintf(g,"%ld\n",d);
    for (i=j;i<=N;i++)
      if (P[i])	fprintf(g,"%ld ",i);
  fclose(g);
  return 0;
}