fbpx

Problema #510 – SortPrime – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un vector cu n elemente, numere naturale. Afișați în ordine crescătoare valorile prime din acest vector.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire

Programul va afișa pe ecran valorile prime din vector, în ordine crescătoare, separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu

Intrare

7
13 1 10 15 3 7 11

Ieșire

3 7 11 13
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int a[1001];
    for(int i = 1; i <= n; ++i)
        cin >> a[i];

    for(int i = 1; i < n; ++i)
        for(int j = i + 1; j <= n; ++j)
            if(a[i] > a[j])
                swap(a[i], a[j]);

    for(int i = 1; i <= n; ++i){
        int cnt = 1, d = 2;
        int ca = a[i];
        while(ca > 1){
            int p = 0;
            while(ca % d == 0)
                ca /= d, p++;
            cnt *= (p + 1);
            d++;
            if(d * d > ca)
                d = ca;
        }
        if(cnt == 2)
            cout << a[i] << ' ';
    }

    return 0;
}
Comentarii

S-ar putea sa iti placa