Cod sursa(job #613323)

Utilizator vladbagrinVlad Bagrin vladbagrin Data 21 septembrie 2011 17:08:20
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>

#define INPUT "ciur.in"
#define OUTPUT "ciur.out"
#define MAX 2000001

int main() {
	FILE *f = fopen(INPUT, "r");
	int n, i, j;
	char a[MAX];
	fscanf(f, "%d", &n);
	fclose(f);

	for (i = 2; i <= n; i++) {
		a[i] = 0;
	}

	i = 2;
	while (i <= n) {
		for (; i <= n && a[i] == 1; i++);
		for (j = 2 * i; j <= n; j += i) {
			a[j] = 1;
		}
		i++;
	}

	int total = 0;
	for (i = 2; i <= n; i++) {
		if (a[i] == 0) {
			total++;
		}
	}

	f = fopen(OUTPUT, "w");
	fprintf(f, "%d", total);
	fclose(f);

	return 0;
}