Informatică, întrebare adresată de Iulia425, 9 ani în urmă

Se citeste un vector A cu n (n<=1000) elemente numere naturale. Ordonati crescator elementele prime si plasati-le la începutul vectorului si apoi descrescator pe cele neprime, în a doua parte a vectorului. Afisati vectorul ordonat ca în cerinta.
Exemplu: n=7, A={33, 13, 77, 19, 5, 34, 100} => 5 13 19 100 77 34 33

Răspunsuri la întrebare

Răspuns de express
3
#include <bits/stdc++.h>
using namespace std;
int n, v[1005], v1[1005], v2[1005], k1, k2;
bool descr(int a,int b)
{
    return a>b;
}
bool prime(int n)
{
    for(int i = 2; i * i <= n; i ++)
     if (n % i == 0) return false;
    return true;
}
int main()
{
   int i;
   cin >> n;
   for(i=1;i<=n;i++)
    {
        cin >> v[i];
        if(prime(v[i])) v1[++ k1] = v[i];
                   else v2[++ k2] = v[i];
    }
   sort(v1+1,v1+k1+1);
   sort(v2+1,v2+k2+1,descr);
   for(i = 1; i <= k1; i ++) v[i] = v1[i];
   for(i = 1; i <= k2; i ++) v[i + k1] = v2[i];
   for(i = 1; i <= n; i ++)
    cout << v[i] << " ";
   return 0;
}

Alte întrebări interesante