👤

Va rog muult!!!

Cerința
Definiți funcția

void FRadical(int n, int &x, int &y)
cu parametrii:

n, prin care primește un număr natural din intervalul [1, 1.000.000.000]
x și y – două numere naturale care se determină, cu proprietatea că x2 * y = n, iar x este maxim posibil



Exemplu
În urma apelului FRadical(15000, x, y), se obține x = 50, y = 6.

Important
Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Răspuns :

#include <cmath>

void FRadical(int n, int &x, int &y)

{

   int m;

   x=sqrt(n);

   if (x*x==n) y=1;

   else

   {

       m=x*x;

       while (n%m)

       {

          --x; m=x*x;

          if (n%m==0) y=n/m;

       }

   }

}