2975 - FRadical
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.
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1">
def FRadical(n: int) -> tuple[int, int]:
""" Funcția FRadical primește un număr natural n și returnează două numere naturale x și y, cu proprietatea că x^2 * y = n și x este maxim posibil. """ # Inițializăm variabilele x și y cu 1 x, y = 1, 1 # Căutăm cel mai mare x astfel încât x^2 divide n while x * x <= n: if n % (x * x) == 0: # Dacă x^2 divide n, actualizăm x și y x = x * x y = n // x else: # În caz contrar, mărim x cu 1 x += 1 # Returnăm tuple-ul (x, y) return (x, y)
if __name__ == "__main__":
# Exemplu de utilizare n = 15000 x, y = FRadical(n) print(f"Pentru n = {n}, x = {x} și y = {y}")
</syntaxhighlight>