310
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
șiy
– două numere naturale care se determină, cu proprietatea căx
2
* y = n
, iarx
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.
#include <bits/stdc++.h> void FRadical(int n, int &x, int &y){ int maxi = 0; for(int d = 1; d * d <= n; ++d){ if(n % d == 0){ int nr = d; int r = sqrt(nr); if(r * r == nr && nr > maxi) maxi = nr, y = n / d; nr = n / d; r = sqrt(nr); if(r * r == nr && nr > maxi) maxi = nr, y = d; } } x = sqrt(maxi); }
Comentarii