Cod sursa(job #2980445)

Utilizator 100pCiornei Stefan 100p Data 16 februarie 2023 15:24:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

#define MAX 1000000
#pragma GCC optimize("O3")

using namespace std;

ifstream fin ("ciur.in");
ofstream fout ("ciur.out");

vector <bool> ciur(MAX + 5);

int n, ans = 1;

int main()
{
    fin >> n;

    for(int i = 3; i <= n; i += 6)
        ciur[i >> 1] = 1;
    if(n >= 3)
        ans++;
    for(int i = 5;i <= n; i += 6)
    {
        if(!ciur[i >> 1])
        {
            ans++;
            for(int j = i + i + i;j <= n; j += i << 1)
                ciur[j >> 1] = 1;
        }
        if(!ciur[(i + 2) >> 1] && i + 2 <= n)
        {
            ans++;
            for(int j = i + i + i + 6; j <= n; j += (i + 2) << 1)
                ciur[j >> 1] = 1;
        }
    }
    fout << ans;
}