Cod sursa(job #1358370)

Utilizator cristian.enciuCristian Enciu cristian.enciu Data 24 februarie 2015 16:15:14
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include<stdio.h>

unsigned char v[1 << 17];

int main()
{
	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);

	int n, count = 0, ii;

	scanf("%d", &n); 

	for(int i = 3 ; i <= n ; i += 2) {
		if(v[i >> 4] & (1 << ((i >> 1) & 7))) continue;

		++count;

		for(int j = i + (ii = i + i) ; j <= n ; j += ii)
			v[j >> 4] |= 1 << ((j >> 1) & 7);
	}

	printf("%d", count + 1);

	return 0;
}