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

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.


boiustef: pot exista mai multe numere cu număr maxim de divizori primi distincţi ...
ce facem atunci???

Răspunsuri la întrebare

Răspuns de boiustef
0

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

Alte întrebări interesante