Класс RationalNumber

Ваша задача — определить класс RationalNumber на языке Python. Этот класс должен использоваться для представления рационального числа, то есть числа, которое можно выразить как отношение двух целых чисел (числителя и знаменателя).
Класс RationalNumber должен обладать следующими характеристиками:
  • Класс должен иметь два приватных целочисленных атрибута: numerator (числитель) и denominator (знаменатель) рационального числа.
  • Класс должен определить магические методы __add__, __sub__, __mul__ и __truediv__ для выполнения сложения, вычитания, умножения и деления двух рациональных чисел соответственно.
  • Операции сложения, вычитания, умножения и деления должны выполняться математически корректно для рациональных чисел, а результатом должен быть новый экземпляр класса RationalNumber.
  • Класс должен сокращать рациональное число до его простейшей формы, деля числитель и знаменатель на их наибольший общий делитель (НОД).
  • Класс должен реализовать магический метод __str__, который возвращает строку <numerator> / <denominator> в сокращенном виде.
Ввод
Вывод
print(RationalNumber(1, 2) + RationalNumber(1, 3)); print(RationalNumber(1, 2) - RationalNumber(1, 3)); print(RationalNumber(1, 2) * RationalNumber(1, 3)); print(RationalNumber(1, 2) / RationalNumber(1, 3));
5 / 6 1 / 6 1 / 6 3 / 2
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue