Cod sursa(job #1483619)

Utilizator mike93Indricean Mihai mike93 Data 9 septembrie 2015 17:14:15
Problema Ciurul lui Eratosthenes Scor 90
Compilator c Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
	FILE* fin = fopen("ciur.in", "r");
	int n;
	fscanf(fin, "%d\n", &n);
	fclose(fin);
	
	char* t = malloc((n + 2) * sizeof(char));
	memset(t, 0, sizeof(*t));
	
	t[0] = 1;
	t[1] = 1;
	
	int last = 2;
	int val;
	
	while(last <= n) {
		val = 2 * last;
		while(val <= n) {
			t[val] = 1;
			val = val + last;
		}
		last++;
		while(t[last] == 1) {
			last++;
		}
	}
	
	int i;
	int res = 0;
	
	for(i=0; i<=n; i++) {
		res = res + 1 - t[i];
	}
	
	FILE* fout = fopen("ciur.out", "w");
	fprintf(fout, "%d\n", res);
	fclose(fout);
	return 0;
}