Cod sursa(job #630506)

Utilizator bogdanrnRadu Bogdan Nicolae bogdanrn Data 5 noiembrie 2011 17:42:58
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>


using namespace std;

int main()
{
    ifstream f("ciur.in");
    ofstream g("ciur.out");
    unsigned int n=2;
    unsigned int i=2;
    unsigned int mult=2;
    unsigned int j=2;
    unsigned int nr=0;
    f>>n;
    bool x[n+1];
    for (i=2;i<=n;i++){
        x[i]=false;
    }
    i=2;
    while (j<=n){
        if (x[j]==false){
            nr++;
            x[j]=true;
            mult=j;
            if (j*j<=n){
                i=j*j;
                while (i<=n){
                    x[i]=true;
                    if (j*(mult+1)<=n)
                        {
                            i=j*(++mult);
                        } else {
                            i = n+1;
                        }
                }
            }
        } else {
            j++;
        }
    }
    g<<nr;
    return 0;
}