Cod sursa(job #145955)
Utilizator | Data | 29 februarie 2008 19:33:19 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
# include <stdio.h>
FILE *f=fopen("ciur.in","r"),*g=fopen("ciur.out","w");
char P[2000001];
int A[2000];
long i,j,d,N;
int main()
{
fscanf(f,"%ld",&N);
fclose(f);
for (i=2;i<=N;i++)
P[i]=1;
d=0;
for (i=2;i<=N;i++)
if (P[i])
{
d++;
for (j=i+i; j<=N; j+=i)
P[j] = 0;
}
j=0;
for (i=N;i>1;i--){
if (P[i]) { j++;
A[j]=i;
if (j==1000)
break;
}
}
fprintf(g,"%ld\n", d);
for (i=j;i>0;i--)
fprintf(g,"%d ",A[i]);
fclose(g);
return 0;
}