#include <iostream>
#include <vector>
#include <list>
#include <cstdlib>

using namespace std;

void sieve(list<int>& unknown, vector<int>& primes)
{
	while (!unknown.empty())
	{
		int p = unknown.front();
		unknown.pop_front();
		list<int>::iterator i = unknown.begin();
		while (i != unknown.end())
		{
			if (*i % p)
				++i;
			else
				i = unknown.erase(i);
		}
		primes.push_back(p);
	}
}

int main(int argc, char *argv[]) 
{
    size_t NUM = (argc == 2 ? (atoi(argv[1]) < 1 ? 1 : atoi(argv[1])): 
1);

	vector<int> primes;

	// run the sieve repeatedly
    while (NUM--) {
		list<int> integers;
		for (int i = 2; i < 8192; ++i)
			integers.push_back(i);
		primes.clear();
		sieve(integers, primes);
    }

    cout << "Count: " << primes.size() << endl;
	return 0;
}
