Pagini recente » Cod sursa (job #1490012) | Cod sursa (job #1447361) | Cod sursa (job #2909211) | Diferente pentru implica-te/arhiva-educationala intre reviziile 139 si 138 | Cod sursa (job #2509456)
#include <fstream>
using namespace std;
ifstream cin("ciur.in");
ofstream cout("ciur.out");
unsigned char c[250100];
inline void setbit(int i)
{
int i1 = i >> 3;
int r1 = i & 7;
c[i1] |= (1 << r1);
}
inline bool getbit(int i)
{
int i1 = i >> 3;
int r1 = i & 7;
return ((c[i1] & (1 << r1)) != 0);
}
void ciur(int n)
{
int i, j;
setbit(0);
setbit(1);
for (i = 2; i * i <= n; i++)
{
if (!getbit(i))
{
for (j = i * i; j <= n; j += i)
{
setbit(j);
}
}
}
}
int main()
{
int n, i, cnt = 0;
cin >> n;
ciur(n);
for (i = 1; i <= n; i++)
{
if (!getbit(i))
cnt++;
}
cout << cnt << endl;
return 0;
}