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