Pagini recente » Cod sursa (job #769410) | Cod sursa (job #840088) | Cod sursa (job #759757) | Cod sursa (job #51478) | Cod sursa (job #149665)
Cod sursa(job #149665)
#include<fstream.h>
ifstream f("ciur.in");
ofstream g("ciur.out");
char prim[1000005];
long long n,p;
//long long prost[1001];
int main()
{f>>n;
int j,i=1,prostie;
int nr=2;
int prod=(2*i+1)*(2*i+1);
int ceva=2*i+1;
while(prod<n)
{for(j=(prod-1)/2;j<=n/2;j+=ceva)
prim[j]=1;
i++;
while(prim[i]==1) i++;
prod=(2*i+1)*(2*i+1);
ceva=2*i+1;
nr++;
}
for(i=i+1;i<n/2;i++)
if(prim[i]==0) nr++;
g<<nr<<'\n';
//int k=0;
if(nr<=1000)
{g<<2<<' ';
nr--;
for(i=1;nr>0;i++)
if(prim[i]==0) {g<<2*i+1<<' ';nr--;}
}
else {if(n%2==1) i=n/2;
else i=n/2-1;
int cnt=1000;
while(cnt>0)
{if(prim[i]==0)
{cnt--;
//prost[++k]=2*i+1;
}
i--;}
while(prim[i]==1) i++;
g<<2*i+1<<' ';
i++;
//prostie=0;
cnt=1;
for(;cnt<1000;i++)
if(prim[i]==0) {g<<2*i+1<<' ';cnt++;}
//while(k>0) g<<prost[k--]<<' ';
}
//g<<endl<<prostie;
f.close();
g.close();
return 0;
}