Cod sursa(job #648831)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 14 decembrie 2011 17:55:22
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;

struct bit{unsigned a : 1;};
vector <bit> biti;

int main(){
	freopen ("ciur.in", "r", stdin), freopen("ciur.out", "w", stdout);
	int i, n, j, radPatrata, nr = 0;
	scanf("%d", &n);
	biti.assign(n + 1, (bit){1});
	
	radPatrata = (int)sqrt(n);
	for (i = 2; i <= radPatrata; i++)
			for (j = i * 2; j <= n; j += i) biti[j].a = 0;
	
	//numar cate numere prime sunt
	for (i = 2; i <= n; i++) nr += biti[i].a;
	printf("%d\n", nr);
	return 0;
}