defgcd(a, b):while b !=0:
a, b = b, a % b
return a
defto_fraction(num, den):if den ==0:returnNoneif num ==0:return0,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 *=-1return whole, num, den
defsimplify_fraction(whole, num, den):if num ==0or 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
defsimplify_mixed_fraction(whole, num, den):if num ==0or den ==0:return whole, num, den
if whole <0:
num *=-1if num <0:
sign =-1
num =abs(num)else:
sign =1return 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
二、最大公因数、最小公倍数
defgcd(a, b):while b !=0:
a, b = b, a % b
return a
deflcm(a, b):returnabs(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}")