Cod sursa(job #763622)

Utilizator igsifvevc avb igsi Data 2 iulie 2012 18:33:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.46 kb
#include <stdio.h>

char prime[1000009];
int i, j, nr, n;

int main()
{
	FILE *in = fopen("ciur.in", "r");
	FILE *out = fopen("ciur.out", "w");
	
	fscanf(in, "%d", &n);
	
	nr = 1;
	for(i = 1; ((i*i) << 2) + (i << 2) + 1 <= n; ++i)
		if(prime[i] == 0)
			for(j = ((i*i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1)
				prime[j] = 1;
	
	for(i = 1; i < (n >> 1); i++)
		if(prime[i] == 0)
			nr++;
	
	fprintf(out, "%d\n", nr);
	
	fclose(in);
	fclose(out);
	return 0;
}