👤

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...