# PBinfo #3278 – AproapePrime – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Spunem că un număr natural este aproape prim dacă el poate fi scris ca produs de două numere prime. De exemplu 6 și 25 sunt aproape prime pentru că 6 = 2 * 3, iar 25 = 5 * 5. Considerăm șirul crescător al numerelor naturale aproape prime: 4, 6, 9, 10, 14, 15, 21, … Acestora li se asociază câte un număr de ordine, numerotarea începând cu 1. Deci 4 este primul număr aproape prim, 6 este al doilea număr, 9 este al treilea etc.

Cerința
Dat un număr natural N, să se determine al N-lea număr aproape prim.

Date de intrare
Programul citește de la tastatură numărul N.

Date de ieșire
Programul va afișa pe ecran un singur număr natural, reprezentând al N-lea număr aproape prim.

Restricții și precizări

1 ≤ N ≤ 23.378

Exemplul 1:
Intrare

4
Ieșire

10
Exemplul 2:
Intrare

300
Ieșire

1003

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
bitset<1000005> b;
bitset<1000005> a;
int prime[80000], k, n;
void Ciur(int n)
{
    int i, j;
    for (i = 4; i <= n; i += 2)
        b[i] = 1;
    for (i = 3; i * i <= n; i += 2)
        if (b[i] == 0)
            for (j = i * i; j <= n; j = j + 2 * i)
                b[j] = 1;
    k = 1;
    prime[1] = 2;
    for (i = 3; i <= n; i += 2)
        if (b[i] == 0) prime[++k] = i;
}
void AproapePrime()
{
    int i, j;
    for (i = 1; i <= k; i++)
        for (j = i; j <= k && 1LL * prime[i] * prime[j] <= 100000; j++)
            a[ prime[i] * prime[j] ] = 1;
    int cnt = 0;
    for (int i = 4; i <= 100000; i++)
        if (a[i] == 1) cnt++;
}
void CitireAfisare()
{
    int i;
    cin >> n;
    for (i = 4; i <= 100000; i++)
        if (a[i] == 1)
        {
            n--;
            if (n == 0)
            {
                cout << i;
                return;
            }
        }
}
int main()
{
    Ciur(100000);
    AproapePrime();
    CitireAfisare();
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3278)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3278/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3278/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
