Cod sursa(job #3178833)

Utilizator BoggiGurau Bogdan Boggi Data 2 decembrie 2023 16:14:00
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;

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

bool numarCompus[2000001];

void marcheazaMultiplii(int nrPrim, int limita) {
    for (int i = 1; i * nrPrim <= limita; ++i) {
        numarCompus[i * nrPrim] = true;
    }
}

int main()
{
    int numar, nmrPrime = 0;
    fin >> numar;
    for (int i = 2; i <= numar; ++i) {
        if (!numarCompus[i]) {
            marcheazaMultiplii(i, numar);
            ++nmrPrime;
        }
    }
    fout << nmrPrime;
}
/*https://infoarena.ro/problema/ciur
idee
parcurg numerele mai mici sau egale decat N;
intr-un vector de tip bool, voi marca numerele compuse. Asadar cand gasesc un numar nemarcat inseamna ca am un numar prim, si trebuie sa marchez toti multiplii lui mai mici sau egali cu n
*/