Pagini recente » Cod sursa (job #1734707) | Cod sursa (job #1808059) | Cod sursa (job #528268) | Cod sursa (job #3169061) | Cod sursa (job #147135)
Cod sursa(job #147135)
#include <cstdio>
#include <cstring>
char *P;
long Prime[1000], k;
bool ok = false;
long ciur(long n) {
P = new char[n+10];
memset(P, 0, sizeof(char)*(n+10));
long i, j, nr=0;
for (i=1; 2*i+1<n; ++i)
if ( P[i]==0 )
for (j=3*i+1; 2*j+1<=n; j+=2*i+1)
P[j]=1;
nr = 1; Prime[0] = 2;k=1;
for (i=1; 2*i+1<=n; ++i)
if ( P[i]==0 ) {
++nr;
Prime[k++] = 2*i+1;
if ( k==1000 )
ok++, k=0;
}
return nr;
}
int main() {
long n;
fscanf(fopen("ciur.in", "r"), "%ld",&n);
freopen("ciur.out", "w", stdout);
printf("%ld\n", ciur(n));
if ( ok ) {
for (long i=k+1; i<=999; i++)
printf("%ld ", Prime[i]);
for (long i=0; i<=k; ++i)
printf("%ld ", Prime[i]);
} else {
for (long i=0; i<k; ++i)
printf("%ld ", Prime[i]);
}
printf("\n");
return 0;
}