Cod sursa(job #144887)
| Utilizator | Data | 28 februarie 2008 08:11:01 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.43 kb |
#include <stdio.h>
char v[2000005];
int w[1009];
int main(){
int n,i,k=0,j,nr=1;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&n);
v[1]=1;
for(i=4;i<=n;i+=2)
v[i]=1;
for(i=3;i<=n;i+=2)
if(!v[i]){
nr++;
for(j=i+i;j<=n;j+=i)
v[j]=1;
}
for(i=n;i>=2;i--)
if(!v[i]){
w[++k]=i;
if(k==1000) break;
}
printf("%d\n",nr);
for(i=k;i>=1;i--)
printf("%d ",w[i]);
}