标题:Python 实现欧几里得算法与分数运算
正文:
欧几里得算法,又称辗转相除法,是一种用于计算两个非负整数的最大公约数的算法。在这篇文章中,我们将介绍 Python 中的欧几里得算法的递归和非递归写法,并将其应用于分数运算。
欧几里得算法的递归写法
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
上述代码定义了一个递归函数 gcd
,用于计算两个整数的最大公约数。其中,a
和 b
分别是待计算的两个整数。
欧几里得算法的非递归写法
def gcd_no_rec(a, b):
while b > 0:
r = a % b
a = b
b = r
return a
这段代码展示了欧几里得算法的非递归实现方式。通过循环迭代,不断更新余数,直到余数为 0。
分数运算的实现
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):