1062 最简分数 (20 分)python

# 两个分数的值可以大于1,所以要使用while循环,每次循环不断递增,直到大于最大的那个分数
import math
a,b,k = map(str,input().split(" "))
k = int(k)
n1,m1 = map(int,a.split("/"))
n2,m2 = map(int,b.split("/"))

res1 = n1/m1
res2 = n2/m2
res3 = min(res1,res2)       #拿到两个分数最小值
res4 = max(res1,res2)       #拿到两个分数最大值

list1 = []
list2 = []

for i in range(2,int(math.sqrt(k))+1):          #拿到k所有因子,放入list2中
    if k%i == 0:
        list2.append(i)
        list2.append(k//i)
i = 1
if res3<1/k<res4:       #   首先判断1/k是否在两个分数范围中
    list1.append(str(1) + "/" + str(k))
while 1:        # 循环判断
    flag = 0
    for j in list2:
        if i%j == 0:
            flag = 1
            break
    if flag == 1:
        i = i + 1
        continue
    if res4 < i / k:
        break
    if k%i != 0 and res3<i/k<res4:
        list1.append(str(i) + "/" + str(k))
    i = i+1

print(" ".join(list1))

猜你喜欢

转载自blog.csdn.net/weixin_41775301/article/details/87791405