Cod sursa(job #1532901)

Utilizator ramhackNastase Ramon ramhack Data 21 noiembrie 2015 19:21:27
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int ciurulLuiEratosthenes(int N) {

	bool* prime = new bool[N];

	for(int i = 0; i < N; ++i) {
		prime[i] = true;
	}
	prime[0] = prime[1] = false;

	for(int i = 2; i <= sqrt(N); ++i) {

		if(prime[i]) {

			for(int k = i*i; k < N; k += i) {
				prime[k] = false;
			}
		}
	}

	int total = 0;
	for(int i = 0; i < N; ++i) {

		if(prime[i]) {
			total++;
		}
	}

	return total;
}


int main(int argc, char const *argv[])
{
	FILE *fIn, *fOut;
	int N;

	if((fIn = fopen("ciur.in", "r")) == NULL) {
		fprintf(stderr, "Can't open FIle!\n");
		return -1;
	}
	fOut = fopen("ciur.out", "w");

	fscanf(fIn, "%d", &N);

	int res = ciurulLuiEratosthenes(N);

	fprintf(fOut, "%d\n", res );

	return 0;
}