Pagini recente » Cod sursa (job #483540) | Cod sursa (job #1283020)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 1 << 30;
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 << 1) & 7);
}
}
fout << pr + 1; //si 2
return 0;
}