Cod sursa(job #147463)
Utilizator | Data | 2 martie 2008 22:10:55 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include<stdio.h>
#define Nmax 20000001
FILE *fin=freopen("ciur.in","r",stdin),
*fout=freopen("ciur.out","w",stdout);
int n;
long sol[1024];
char viz[Nmax];
void solve()
{
int cont=0;
for(long i=2;i<=n;i++)
if(!viz[i])
{
for(long j=i;i*j<=n;j++)
viz[j*i]=1;
cont++;
}
printf("%d\n",cont);
int cnt=0;
for(long i=n;i>1;i--)
if(!viz[i])
{
sol[++cnt]=i;
if(cnt==1000) break;
}
for(int i=cnt;i;i--)
printf("%d ",sol[i]);
}
int main()
{
scanf("%d",&n);
solve();
return 0;
}