Cod sursa(job #2215468)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 22 iunie 2018 11:56:44
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciur.in");
ofstream fout("ciur.out");
int Sol,n;
bool f[2000009];
///vector<int>primes;
///int least[2000009];
///void E1(void){
///for (int i=2;i<=n;i++){
///if (least[i]==0){
///primes.push_back(i);
///least[i]=i;
///}
///for (int j=0;primes[j]<=least[i]&&i*primes[j]<=n&&j<primes.size();j++) {
///if (least [i*primes[j]]!= 0)least[i*primes[j]]=min(least[i*primes[j]],primes[j]);
///else least[i*primes[j]]=primes[j];
///}
///}
///for(int i=2;i<=n;i++)
///if(least[i]==i)Sol++;
///}
void E2(void){
for (int i=4; i<= n;i+=2)f[i]=1;
for (int i=3;i*i<=n;i+=2)if (f[i]==0)
for (int j=i*i;j<=n;j+=2*i)f [j] = 1;
for (int i = 2; i <= n; i ++)Sol += !f [i];
}
int main(void){
fin >> n;
E2();
fout << Sol;
return 0;}