简化分数函数在 Python 中无法正常工作
Simplify fraction function does not work properly in Python
我做了一个简化函数,它工作正常,但并不完美。
def gcd(a, b):
while b > 0:
if a == 0:
return b
a, b = b, (a % b)
def add_frac(n1, d1, n2, d2):
g = gcd(d1, d2)
frac = (((n1 * d2) + (n2 * d1)) // g, (d1 * d2) // g)
return frac
当我尝试时:print(add_frac(1, 2, 1, 6))
它 returns (4, 6)。我希望它是 (2, 3)。对得到这个结果有什么帮助吗? 注意! 我想在不使用 import math
的情况下得到结果
有效示例:
print(add_frac(1, 2, 1, 4))
给出 (3, 4)
使用您的方法,只需找到所得分子和分母的 GCD 并除以它
def add_frac(n1, d1, n2, d2):
num = (n1*d2 + n2*d1)
den = d1*d2
g = gcd(num,den)
return num/g, den/g
一种选择是使用 python
中的分数模块
>>>print(Fraction(1, 2) + Fraction(1, 6))
>>>2/3
或者如果您想编写自己的 python 代码,则将 gcd 方法更改为
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
和add_frac方法到
def add_frac(n1, d1, n2, d2):
g = gcd(d1, d2)
frac = ((d1/g)*n1 + (d2/g)*n2, g)
return frac
请注意,因为我们已经找到了 gcd,所以我们不需要 floor division(//),因为我们知道 d1 和 d2 将是被 g
整除
我做了一个简化函数,它工作正常,但并不完美。
def gcd(a, b):
while b > 0:
if a == 0:
return b
a, b = b, (a % b)
def add_frac(n1, d1, n2, d2):
g = gcd(d1, d2)
frac = (((n1 * d2) + (n2 * d1)) // g, (d1 * d2) // g)
return frac
当我尝试时:print(add_frac(1, 2, 1, 6))
它 returns (4, 6)。我希望它是 (2, 3)。对得到这个结果有什么帮助吗? 注意! 我想在不使用 import math
有效示例:
print(add_frac(1, 2, 1, 4))
给出 (3, 4)
使用您的方法,只需找到所得分子和分母的 GCD 并除以它
def add_frac(n1, d1, n2, d2):
num = (n1*d2 + n2*d1)
den = d1*d2
g = gcd(num,den)
return num/g, den/g
一种选择是使用 python
中的分数模块>>>print(Fraction(1, 2) + Fraction(1, 6))
>>>2/3
或者如果您想编写自己的 python 代码,则将 gcd 方法更改为
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
和add_frac方法到
def add_frac(n1, d1, n2, d2):
g = gcd(d1, d2)
frac = ((d1/g)*n1 + (d2/g)*n2, g)
return frac
请注意,因为我们已经找到了 gcd,所以我们不需要 floor division(//),因为我们知道 d1 和 d2 将是被 g
整除