Cod sursa(job #144736)
Utilizator | Florian Marcu Florian | Data | 27 februarie 2008 21:44:53 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
#include<stdio.h>
FILE*f=fopen("ciur.in","r");
FILE*g=fopen("ciur.out","w");
char u[2000005];
int a[1025];
int n,p;
void erat()
{
int i,j;
for(i=1;i<=n;++i) u[i]='0';
a[1]=2; p=1;
for(j=2;j<=n;j++) u[2*j]='1';
for(i=3;i<=n;i+=2)
if(u[i]=='0')
{
j=3;
a[++p]=i;
if(p>=1000) break;
while(i*j<=n)
{
u[i*j]='1';
j+=2;
}
}
}
int main()
{
fscanf(f,"%d",&n);
erat();
int i;
if(p>1000) p=1000;
fprintf(g,"%d\n",p);
for(i=1;i<=p;++i) fprintf(g,"%d ",a[i]);
return 0;
}