Cod sursa(job #1206431)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 9 iulie 2014 22:13:20
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
//
//  main.cpp
//  Ciurul lui Eratosthenes
//
//  Created by Alex Petrache on 09/07/14.
//  Copyright (c) 2014 Alex Petrache. All rights reserved.
//

#include <iostream>
#include <fstream>

using namespace std;

char a[2000000];

int Eratosthenes(int x){
    int i,j,count=0;
    for(i=2;i<=x;i++){
        if(a[i]==0){
            count++;
            for(j=i+i;j<=x;j+=i)
                a[j]=1;
        }
    }
    return count;
}

int main(int argc, const char * argv[])
{
    ifstream f("ciur.in");
    ofstream g("ciur.out");
    int N;
    f>>N;
    g<<Eratosthenes(N);
    return 0;
}


/* Neoptimizat
 
 #include <iostream>
 #include <fstream>
 
 using namespace std;
 
 char a[2000000];
 
 void Eratosthenes(){
 int i,j;
 for(i=2;i<=2000000;i++){
 if(a[i]==0){
 for(j=i+i;j<=2000000;j+=i)
 a[j]=1;
 }
 }
 }
 
 int main(int argc, const char * argv[])
 {
 ifstream f("ciur.in");
 ofstream g("ciur.out");
 int N;
 f>>N;
 Eratosthenes();
 int count=0;
 for(int i=2;i<=N;i++)
 if(!a[i])
 count++;
 g<<count;
 return 0;
 }
 
 */