|
发表于 2017-6-13 18:18:50
|
显示全部楼层
应该要用到最大公约数来约分,还要判断一次是不是整数
- def gcd(m,n):
- """辗转相除法,寻找n和m的最大公约数"""
- # 本来还想分大小,结果发现不分也可以,因为会换过来
- while n != 0:
- m,n = n, m%n
- return m
- # 用公倍数处理,再除以最大公约数就可以相加了 (a*d)/(b*d) + (c*b)/(d*b)
- def fractional_add(a,b,c,d):
- """分数加法,a/b + c/d """
-
- numerator = a*d + c*b # 分子
- denominator = b*d # 分母
- if numerator % denominator == 0:
- # 整除情况下打印整数
- print(numerator // denominator)
- else:
- divisor = gcd(numerator, denominator)
- print("%d / %d" % (numerator/divisor, denominator/divisor))
- def fractional_minus(a,b,c,d):
- """分数减法, a/b - c/d"""
-
- numerator = a*d - c*b
- denominator = b*d
- if numerator % denominator == 0:
- # 整除情况下打印整数
- print(numerator // denominator)
- else:
- divisor = gcd(numerator, denominator)
- print("%d / %d" % (numerator/divisor, denominator/divisor))
复制代码 |
|