👤
Whow
a fost răspuns

Subprogramul Max Imp are doi parametri, a si b. prin care primeşte câte un număr natural
(2Sa<b400). Subprogramul returneaza cel mai mare numar natural din intervalul (a, b) pentru
care produsul divizorilor săi impari pozitivi este strict mai mare decât el însuşi sau 0. dacă nu există
niciun astfel de număr. Scrieti definiția completă a subprogramului
Exemplu: daca a=14 si b=19, atunci subprogramul returnează 18 (1.3.9=27>18)​


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int a,b;

int MaxImp(int a, int b)

{

   int p, d, num,gasit=0;

   for (num=b; num>=a; num--)

   {

       p=1;

       for (d=1; d*d<num; d++)

       {

           if (num%d==0)

           {

               if (d%2==1) p*=d;

               if ((num/d)%d==1) p*=num/d;

           }

       }

       if (d*d==num)

       {

           if (d%2==1) p*=d;

       }

       if (p>num)

       {

           gasit=1; break;

       }

   }

   if (gasit) return num;

   else return 0;

}

int main()

{

   cin >> a >> b;

   cout << MaxImp(a,b);

   return 0;

}

Explicație: