#include <stdio.h>

#define N 65535u
#define N2 32767u
#define N8 8192u

#define TEST_BIT(a, i) (a[i >> 3] & (1 << (i & 7)))
#define CLEAR_BIT(a, i) a[i >> 3] &= ~(1 << (i & 7))

unsigned char a[N8];

int main()
{
	unsigned int i, j;
	unsigned long sum = 0;
	unsigned int count = 0;

	for (i = 0; i < N8; i++) a[i] = 255;
	for (i = 2; i < N2; i++) {
		if (TEST_BIT(a, i)) {
			for (j = i + i; j > i; j += i) CLEAR_BIT(a, j);
		}
	}
	for (i = 2; i < N; i++) {
		if (TEST_BIT(a, i)) {
			sum += i;
			count++;
		}
	}
	printf("%u primes below %u\nsum: %ld\n", count, N, sum);
	return 0;
}
