Pagini recente » Cod sursa (job #1144689) | Cod sursa (job #768734) | Cod sursa (job #1601250) | Cod sursa (job #1061120) | Cod sursa (job #1283015)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 1 << 17;
ifstream fin ("ciur.in");
ofstream fout ("ciur.out");
unsigned char ciur[NMAX];
int main()
{
int n, pr = 0, j, i2;
fin >> n;
for (int i = 3; i <= n; i += 2)
{
//i << 4 si nu 3 pt ca se iau in considerare numai numerele impare
//din cauza asta si i << 1
if (!(ciur[i << 4] & (1 << ((i << 1) & 7))))
{
++pr;
//j = 3 * i si nu 2 * i pt ca se sare peste multipli de 2
for (i2 = i << 1, j = i + i2; j <= n; j += i2)
ciur[j << 4] |= 1 << (j & 7);
}
}
fout << pr;
return 0;
}