Cod sursa(job #2020319)

Utilizator bcrisBianca Cristina bcris Data 9 septembrie 2017 21:19:30
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#include <math.h>

#define NMAX 1000000
int n, prime[NMAX];

int main() {
	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);

	scanf("%d\n", &n);

	if (n == 0 || n == 1) {
		printf("%d\n", 0);
		return 0;
	} else if (n == 2) {
		printf("%d\n", 1);
		return 0;
	}

	for (int i = 3; i < sqrt(n); i += 1)
		if (prime[i/2] == 0) {
			for (int j = i * i; j < n; j += i) {
				prime[j/2] = 1;
			}
		}

	int primes = 1;	
	for (int i = 3; i < n; i +=2) {
		if (prime[i/2] == 0) 
			primes++;
	}	

	printf("%d\n", primes);

	return 0;
}