Pagini recente » Cod sursa (job #3226044) | Cod sursa (job #3227777) | Cod sursa (job #13546) | Cod sursa (job #6483) | Cod sursa (job #144628)
Cod sursa(job #144628)
#include <iostream>
#define FIN "ciur.in"
#define FOUT "ciur.out"
#define MAX_N 2000000
using namespace std;
int n,nrs;
char v[MAX_N/8];
int sol[1024];
void ciur(int n){
int i,j;
i=1;
while ((((i*i)<<1)+(i<<1))<=n){
if (((v[i>>3]>>(i & 7))& 1)==0){
j=(((i*i)<<1)+(i<<1));
while (((j<<1)+1)<=n){
v[j>>3]=v[j>>3] | (1 << (j & 7));
j+=(i<<1)+1;
}
}
i++;
}
i=n/2;
if (n%2==0){
i--;}
while (i>=1){
if (((v[i>>3]>>(i & 7))& 1)==0){
nrs++;
if (nrs<=1000)sol[nrs]=2*i+1;
}
i--;
}
}
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d",&n);
nrs=0;
ciur(n);
if (nrs<1000){
sol[++nrs]=2;}else{++nrs;}
printf("%d\n",nrs);
for (int i=min(1000,nrs);i>=1;i--){
printf("%d ",sol[i]); }
fclose(stdin);
fclose(stdout);
}
int main(void){
iofile();
return 0;
}