Pagini recente » Cod sursa (job #2731092) | Cod sursa (job #1615639) | Cod sursa (job #1888916) | Cod sursa (job #24385) | Cod sursa (job #1175899)
#include <fstream>
#include <vector>
const int dim = 2000000 / 8 + 1;
using namespace std;
bool isBitSet(char byte, short int bit)
{
return byte & (1 << bit);
}
void setBit(char &byte, short int bit)
{
byte |= (1 << bit);
}
unsigned int ciur(int N, vector <char> numbers)
{
unsigned int num;
unsigned int count = 0;
for (num = 2; num <= N; ++num) {
if (!isBitSet(numbers[num / 8], num % 8)) {
++count;
for (int i = 2 * num; i <= N; i += num) {
setBit(numbers[i / 8], i % 8);
}
}
}
return count;
}
int main()
{
ifstream input;
ofstream output;
input.open("ciur.in");
output.open("ciur.out");
int N;
vector<char> numbers(dim, 0);
input >> N;
output << ciur(N, numbers);
input.close();
output.close();
return 0;
}