Pagini recente » Cod sursa (job #3132057) | Cod sursa (job #1989990) | Cod sursa (job #2108142) | Cod sursa (job #1132830) | Cod sursa (job #3178833)
#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
*/