Cod sursa(job #2253418)

Utilizator AndreiFlorescuAndrei Florescu AndreiFlorescu Data 3 octombrie 2018 22:43:28
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

void initCiur (int n, bool ciur[]) {
	for (int i = 2; i * i <= n; ++i) {
		if (!ciur[i]) {
			for (int j = i * i; j <= n; j += i) {
				ciur[j] = true;
			}
		}
	}
}

int main () {
	FILE *f_in, *f_out;
	int n;
	int count = 0;
	bool *ciur;

	f_in = fopen ("ciur.in", "r");
	f_out = fopen ("ciur.out", "w");

	fscanf (f_in, "%d", &n);
	ciur = (bool*) calloc (n + 1, sizeof(bool));

	initCiur(n, ciur);

	for (int i = 2; i <= n; ++i) {
		if (!ciur[i]) {
			count++;
		}
	}

	fprintf (f_out, "%d\n", count);

	fclose(f_in);
	fclose(f_out);

	return 0;
}