Pagini recente » Cod sursa (job #706380) | Cod sursa (job #1565923) | Cod sursa (job #368966) | Cod sursa (job #1235684) | Cod sursa (job #153421)
Cod sursa(job #153421)
#include <cstdio>
#include <cstring>
char *P;
long Prime[1000], k;
bool ok = false;
long ciur(long n) {
long dim = (n>>1)+2;
P = new char[dim];
memset(P, 0, sizeof(char)*(dim));
long i, j, nr=0;
for (i=1; ((i*i+i)<<2)+1<n; ++i)
if ( P[i]==0 )
for (j=(i*i+i)<<1; (j<<1)+1<=n; j+=(i<<1)+1)
P[j]=1;
nr = 1; Prime[0] = 2;k=1;
for (i=1; (i<<1)+1<=n; ++i)
if ( P[i]==0 ) {
++nr;
Prime[k++] = (i<<1)+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));
return 0;
if ( ok ) {
for (long i=k; 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;
}