2975 - FRadical
De la Universitas MediaWiki
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
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}")