Python

Помогите решить программу на Python

Даны два натуральных числа n и m.

Сократите дробь (n / m), то есть выведите два других числа p и q таких, что (n / m) = (p / q) и дробь (p / q) — несократимая.

Решение оформите в виде функции ReduceFraction(n, m), получающая значения n и m и возвращающей кортеж из двух чисел: return p, q.

Тогда вывод можно будет оформить как print(*ReduceFraction(n, m)).

Формат ввода

Вводятся два натуральных числа.

Формат вывода

Выведите ответ на задачу.
 import math
def ReduceFraction(n, m):
t = math.gcd(n, m)
return n // t, m // t

print(*ReduceFraction(*map(int, input().split()))) # 2 числа в одной строке
# или
print(*ReduceFraction(int(input()), int(input()))) # по одному числу в строке
Евгений Шабалдин
Евгений Шабалдин
80 270
Лучший ответ
Сокращение дроби можно осуществить с помощью нахождения наибольшего общего делителя (НОД) числителя и знаменателя. В Python для этого существует встроенная функция `math.gcd()`.

Вот решение задачи:

```python
import math

def ReduceFraction(n, m):
gcd = math.gcd(n, m)
return n // gcd, m // gcd

n = int(input())
m = int(input())
print(*ReduceFraction(n, m))
```

В этом коде функция `ReduceFraction(n, m)` вычисляет НОД для двух чисел `n` и `m`, а затем делит `n` и `m` на НОД, чтобы получить сокращённую дробь. Функция возвращает два числа в виде кортежа.

Затем мы принимаем два числа на ввод и выводим результат работы функции `ReduceFraction(n, m)`. Используется распаковка кортежа с помощью `*`, чтобы вывести два числа, разделённые пробелом.
Для решения данной задачи на Python можно использовать алгоритм нахождения наибольшего общего делителя (НОД) чисел n и m. После нахождения НОДа, мы делим числа n и m на этот НОД, чтобы получить несократимую дробь.

Вот пример реализации функции ReduceFraction(n, m):

```python
def ReduceFraction(n, m):
# Находим НОД чисел n и m
def gcd(a, b):
while b:
a, b = b, a % b
return a

# Находим НОД для чисел n и m
greatest_common_divisor = gcd(n, m)

# Делим числа n и m на НОД
p = n // greatest_common_divisor
q = m // greatest_common_divisor

return p, q

# Считываем входные данные
n = int(input())
m = int(input())

# Выводим результат
print(*ReduceFraction(n, m))
```

Вы можете использовать эту функцию, чтобы решить задачу. Она принимает значения n и m и возвращает кортеж из двух чисел (p и q), которые представляют несократимую дробь. Затем вы можете вывести результат, используя `print(*ReduceFraction(n, m))`.