欧几里得算法python

一、问题描述

求最大公约数

python 复制代码
class Fraction:
    def __init__(self, a, b):
        self.a = a
        self.b = b
        x = self.gcd(a, b)
        self.a /= x
        self.b /= x

    def gcd(self, a, b):
        while b >0:
            r = a % b
            a = b
            b = r
        return a

    def zgs(self, a, b):
        x = self.gcd(a, b)
        return a / x * b

    def __add__(self, other):
        a = self.a
        b = self.b
        c = other.a
        d = other.b
        fenmu = self.zgs(b, d)
        fenzi = a * fenmu / b + c * fenmu / d
        return Fraction(fenzi, fenmu)

    def __str__(self):
        return "%d/%d" % (self.a, self.b)

a = Fraction(1, 3)
b = Fraction(1, 2)
print(a+b)

二、结果展示

python 复制代码
5/6
相关推荐
郝学胜-神的一滴2 小时前
Qt的QSlider控件详解:从API到样式美化
开发语言·c++·qt·程序人生
学困昇3 小时前
C++11中的{}与std::initializer_list
开发语言·c++·c++11
郝学胜-神的一滴3 小时前
Qt的QComboBox控件详解:从API到样式定制
开发语言·c++·qt·程序人生·个人开发
憧憬blog3 小时前
【Kiro开发集训营】拒绝“屎山”堆积:在 Kiro 中重构“需求-代码”的血缘关系
java·开发语言·kiro
FL171713143 小时前
Pytorch保存pt和pkl
人工智能·pytorch·python
n***i954 小时前
Java NIO文件操作
java·开发语言·nio
星释4 小时前
Rust 练习册 72:多米诺骨牌与回溯算法
开发语言·算法·rust
爱学习的小道长5 小时前
进程、线程、协程三者的区别和联系
python·ubuntu
程序喵大人5 小时前
推荐个C++高性能内存分配器
开发语言·c++·内存分配