Cod sursa(job #560403)

Utilizator PatrunjeluMarginean Bogdan Alexandru Patrunjelu Data 18 martie 2011 14:37:56
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>

int nrprime[2000001];
int n;
int rezultat;

int main()
{
    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);
    scanf("%d", &n);
    for (int i = 2; i<= n; ++i)
       nrprime[i] = 1; //Presupunem ca toate numerele de la 2 pana la N sunt prime
    for (int i = 2; i <=n; ++i) //Trecem prin toate numerele de la 2 la N
    {
       if (nrprime[i] == 1) //Daca numarul gasit e prim
       {
           ++rezultat; //Marim numarul de nr prime
           for (int p = i + i; p<=n; p+=i)
           {
               nrprime[p] = 0; //Se stie ca daca avem numarul X prim atunci nr. 2X, 3X, 4X etc. nu sunt prime
           }
       }
       //Continuam for-ul pana la N.
    }
    printf("%d", rezultat);
    return 0;
}