Informatică, întrebare adresată de teopiscu, 8 ani în urmă

Se citeste un vector v cu n elemente care sunt nr. intregi. Afisati 2 nr. separate astfel:
-primul nr. relerezinta cel mai mare nr. care se poate forma luand de la fiecare element din vector doar cifra maxima;
-al doilea nr. reprezinta numerele super-prime din vector(super prim este numarul care este prim si care are si oglinditul sau prim)​

URGENT, VA ROG!

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

using namespace std;

int ogl(int x)

{

   int y=0;

   while (x)

   {

       y=y*10+x%10;

       x=x/10;

   }

   return y;

}

int prim(int x)

{

   int p=1;

   if (x<2) p=0;

   if (x>2)

   {

       if (x%2==0) p=0;

       else

       {

           for (int j=3; j*j<=x; j+=2)

               if (x%j==0) p=0;

       }

   }

   return p;

}

int main()

{

   int n, i, num, copie;

   cout << "n= "; cin >> n;

   int v[n], c[10], sp[n], cif, cifmax, k=-1;

   for (i=0; i<10; ++i)

       c[i]=0;

   cout << " introdu " << n << " numere intregi " << endl;

   for (i=0; i<n; ++i)

   {

       cin >> v[i];

       num=v[i];

       if (num<0) num=-num;

       cifmax=0; copie=num;

       if (num==0) cifmax=0;

       else

       {

           while (num)

           {

               cif=num%10;

               if (cif>cifmax) cifmax=cif;

               num=num/10;

           }

       }

       ++c[cifmax];

       if (prim(copie) && prim(ogl(copie))) { ++k; sp[k]=v[i]; }

   }

   for (i=9; i>=0; --i)

   {

       if (c[i]>0)

       {

           for (int j=1; j<=c[i]; ++j)

               cout << i;

       }

   }

   cout << endl;

   for (i=0; i<=k; ++i)

       cout << sp[i] << " ";

}

Alte întrebări interesante