python——有理数的加法

【问题描述】
定义有理数类,定义计算两个有理数的和的方法。程序输入两个有理数,输出它们的和。
【输入形式】
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是正整数。
【输出形式】
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
【样例输入】
1/3 1/6
【样例输出】
1/2

class rational():
    def __init__(self , x1 , x2 , y1 , y2):
        self.x1 = x1
        self.x2 = x2
        self.y1 = y1
        self.y2 = y2
    def add(self):
        if self.x2 == self.y2:#如果分母相等
            k = self.x1 + self.y1#分子
            l = self.y2#分母
        else:
            a1 = self.x1 * self.y2#分子
            b1 = self.y1 * self.x2  # 分子
            a2 = self.x2 * self.y2#分母
            k = a1 + b1#分子之和
            l = a2#分母
        # if k % l == 0:
        #     return k//l
        # else:
        #     for i in range(2, k):
        #         while k % i == 0 and l % i == 0:
        #             k = k // i
        #             l = l // i
        #     return str(k) + '/' + str(l)
        x = k
        y = l
        while k % l != 0:#通过辗转相除法求得最大公约数
            k, l = l, (k % l)#l是最大公倍数
        if x % y == 0:#判断分子是不是分母的倍数
            return x//y
        else:
            return str(x//l) + '/' + str(y // l)
a = input().split()
b = []
for i in a:
    n , m = i.split('/')
    b.append(int(n))
    b.append(int(m))
num = rational(b[0] , b[1] , b[2] , b[3])
print(num.add())
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值