Cod sursa(job #2229905)

Utilizator TrixerAdrian Dinu Trixer Data 8 august 2018 13:15:54
Problema Ciurul lui Eratosthenes Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <stdio.h>
#include <math.h>

#define NMAX 2000001

int n, r, count;
int sieve[NMAX];

int main()
{
	// read input
	freopen("ciur.in", "r", stdin);
	scanf("%d", &n);
	r = sqrt(n);
	
	// solve
	count = n - 1;
	for (int i = 2; i <= r; i++) {
		if (!sieve[i]) {
			for (int j = i * i; j <= n; j += i) {
				if (!sieve[j]) {
					sieve[j] = 1;
					count--;
				}
			}
		}
	}

	// print output
	freopen("ciur.out", "w", stdout);
	printf("%d", count);

	return 0;
}