Cod sursa(job #147448)
Utilizator | Data | 2 martie 2008 21:54:36 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include<stdio.h>
#define Nmax 20000001
FILE *fin=freopen("ciur.in","r",stdin),
*fout=freopen("ciur.out","w",stdout);
int n;
long sol[1001];
unsigned char viz[Nmax];
void solve()
{
int cont=0;
for(int i=2;i<=n;i++)
if(!viz[i])
{
for(int j=i;i*j<=n;j++)
viz[i]=1;
cont++;
}
printf("%d\n",cont);
int cnt=0;
for(int i=n;i>1;)
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;
}