今天打算摆烂:Python实现那些烦人的题目

一、约分

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def to_fraction(num, den):
    if den == 0:
        return None
    if num == 0:
        return 0, 1
    sign = (num < 0) ^ (den < 0)
    num, den = abs(num), abs(den)
    g = gcd(num, den)
    num //= g
    den //= g
    whole = num // den
    num %= den
    if sign:
        whole *= -1
    return whole, num, den

def simplify_fraction(whole, num, den):
    if num == 0 or den == 0:
        return whole, num, den
    g = gcd(num, den)
    num //= g
    den //= g
    if num >= den:
        whole += num // den
        num %= den
    return whole, num, den

def simplify_mixed_fraction(whole, num, den):
    if num == 0 or den == 0:
        return whole, num, den
    if whole < 0:
        num *= -1
    if num < 0:
        sign = -1
        num = abs(num)
    else:
        sign = 1
    return simplify_fraction(whole, sign * num, den)

whole, num, den = to_fraction(7, 2)   # 输入7/2
whole, num, den = simplify_mixed_fraction(whole, num, den)   # 化简为最简真分数
print(f"{whole} {num}/{den}")   # 输出3 1/2 

二、最大公因数、最小公倍数

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return abs(a * b) // gcd(a, b)

num1 = 24
num2 = 36
gcd_result = gcd(num1, num2)   # 求最大公因数
lcm_result = lcm(num1, num2)   # 求最小公倍数
print(f"最大公因数:{gcd_result}")
print(f"最小公倍数:{lcm_result}")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值