本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
--------------------------------------------------------------------------------------------------------------------
def huajian(a,b): #定义一个化简函数 a是分子,b是分母
for num in range(2,10): #采用最笨的循环法,一次除以 2-9
if a<num: #如果分子小于除数,跳出循环
break
flag=True #插一个旗子
while flag: #如果flag为True
if (a%num!=0)|(b%num!=0): #如果a,b中任何一个数除以num不等于0
flag=False #将flag置为False
else: #如果a,b都可以整除num
a=int(a/num) #化简
b=int(b/num)
print("%d/%d"%(a,b))
if __name__=='__main__': #函数入口
a, b = input().split() #输入两个有理数
a1, b1 = a.split("/") #取出第一个数的分子a1和分母b1
a2, b2 = b.split("/") #去除第二个数的分子a2和分母b2
a1=int(a1)
b1=int(b1)
a2=int(a2)
b2=int(b2)
if b1==b2: #如果两个分母相同
a3=a1+a2 #分子可以直接相加
if a3%b1==0: #如果分子可以整除分母
print(int(a3/b1)) #输出整数
else:
huajian(a3, b1) #如果分子不能整除分母,对求和后的分子分母进行化简
else:
a3=a1*b2+a2*b1 #通分,分子求和
b3=b1*b2 #求出新分母
if a3%b3==0: #同上
print(int(a3/b3))
else:
huajian(a3, b3)
--------------------------------------------------------------------------------------------------------------------