Pagini recente » Cod sursa (job #903846) | Cod sursa (job #2444614) | Cod sursa (job #246874) | Cod sursa (job #1736216) | Cod sursa (job #144564)
Cod sursa(job #144564)
#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[1001];
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=1;
while ((2*i+1)<=n){
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=1;
sol[1]=2;
ciur(n);
printf("%d\n",nrs);
for (int i=1;i<=min(nrs,1000);i++){
printf("%d ",sol[i]);
}
fclose(stdin);
fclose(stdout);
}
int main(void){
iofile();
return 0;
}