Cod sursa(job #502808)

Utilizator bmaticanBogdan-Alexandru Matican bmatican Data 20 noiembrie 2010 15:03:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.56 kb
#include <stdio.h>
#include <math.h>

int numbers, total;
char prim[2000005];

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

    scanf("%d", &numbers);
    int thesqrt = (int)sqrt(numbers);
    
    for (i = 3; i <= numbers; i+=2)
        prim[i] = 1;
    for (i = 3; i <= numbers; i+=2)
        if (prim[i])
        {
            ++total;
            if(i <= thesqrt) 
	            for (j = i*i; j <= numbers; j += i)
   	             prim[j] = 0;
        }

    printf("%d\n", total + 1);

    return 0;
}