Se citeşte de la tastatură un număr natural n, apoi o secvenţă de n valori naturale. Scrieţi un algoritm care să determine în mod eficient un număr din secvenţa citită care are număr maxim de divizori primi distincţi.


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int n,num,caut, div=0;

int nrdiv(int m)

{

   int nr=0, d=2,e;

   while (d*d<=m)

   {

       e=0;

       while (m%d==0)

       {

           m=m/d; ++e;

       }

       if (e>0) ++nr;

       ++d;

   }

   if (m>1) ++nr;

   return nr;

}

int main()

{

   cin >> n;

   for (int i=1; i<=n; i++)

   {

       cin >> num;

       int x=nrdiv(num);

       if (x>div)

       {

           div=x;

           caut=num;

       }

   }

   cout << caut;

}

Explicație:

a rămas deschisă problema că dacă există mai multe numere din șir care au același număr maxim de divizori primi distincţi. La codul meu afișează pe primul din ele...

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că resursele disponibile v-au fost de ajutor. Pentru întrebări sau asistență suplimentară, nu ezitați să ne contactați. Ne bucurăm să vă revedem în curând și vă invităm să ne salvați în lista de site-uri preferate!


RO Learner: Alte intrebari