Pagini recente » Cod sursa (job #3233641) | Cod sursa (job #2871934) | Cod sursa (job #2871542) | Cod sursa (job #2429017) | Cod sursa (job #523222)
Cod sursa(job #523222)
#include <cstring>
#include <cstdio>
#define VALUE(i) (((v[i/32])>>(i%32))&1)
int main()
{
freopen ("ciur.in","r",stdin);
freopen ("ciur.out","w",stdout);
int N;
scanf ("%d",&N);
int rez = 1;
int *v = new int[N/32+1];
memset(v,0,sizeof(int)*(N/32+1));
bool stop = false;
for (int i=3;i<=N;i+=2)
if (!VALUE(i))
{
rez++;
if (stop) continue;
if (i*i > N) stop = true;
for (int j=i*i;j<=N;j+=i<<1)
v[j/32] |= 1<<(j%32);
}
delete v;
printf ("%d\n",rez);
return 0;
}