Informatică, întrebare adresată de demolitionlovrs, 9 ani în urmă

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ăspunsuri la întrebare

Răspuns de boiustef
11

#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;

       }

   }

}


cpauli: #include
#include
void FRadical(int n, int &x, int &y)
{
int m;
x=sqrt(n);
if(x*x==n)
y=1;
else
{
m=x*x;
while(m*y!=n){
if(m*y>n){
x--;
y--;
}
m=x*x;
y++;
}



}
}
Alte întrebări interesante