请问python如何简化分数输出

python初学者
请问如何print出简化后的分数。
例如用户输入12:9
最后print 4:3


n,m=input().split("/")
n=int(n)
m=int(m)
for i in range(2,n):
        while(n%i==0 and m%i==0):
            n=n//i
            m=m//i
print(str(n)+"/"+str(m))
  1. 这是一个求最大公约数的问题。
  2. 目前求最大公约数的最优算法是辗转相除法(欧几里得算法)。
  3. python内置模块math有内置函数gcd,采用辗转相除法求最大公约数。
from math import gcd
sp = input('输入分数(n:m) ').strip().split(':')
n, m = map(int, sp)
nm_gcd = gcd(n, m)
print('{}:{}'.format(n // nm_gcd, m // nm_gcd))

img

除号使用”:“,“/”均可


n, m = input().replace(":", "/").split("/")
n = int(n)
m = int(m)
for i in range(2, n):
    while (n % i == 0 and m % i == 0):
        n = n // i
        m = m // i
print(str(n) + "/" + str(m))

img