C语言题目:最简真分数序列描述 所谓最简真分数是指分子小于分母,且不能约分的分数.给定 n(1 < n < 200)个非负整数(每个整数不超过3位),哪两个整数分别作为分子和分母能够构成最简真

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 12:40:54

C语言题目:最简真分数序列描述 所谓最简真分数是指分子小于分母,且不能约分的分数.给定 n(1 < n < 200)个非负整数(每个整数不超过3位),哪两个整数分别作为分子和分母能够构成最简真
C语言题目:最简真分数序列
描述
所谓最简真分数是指分子小于分母,且不能约分的分数.给定 n(1 < n < 200)个非负整数(每个整数不超过3位),哪两个整数分别作为分子和分母能够构成最简真分数.输出所有的最简真分数组合;若没有,则输出NO.
关于输入
第1行为正整数个数n 其后为n个非负整数,空格间隔.
关于输出
输出所有最简真分数,分子小的排在前面;若分子相同,分母小的排在前面.各分数之间用逗号间隔.若没有,则输出NO
例子输入
83 7 11 0 5 13 15 9
例子输出
3/5,3/7,3/11,3/13,5/7,5/9,5/11,5/13,7/9,7/11,7/13,7/15,9/11,9/13,11/13,11/15,13/15

C语言题目:最简真分数序列描述 所谓最简真分数是指分子小于分母,且不能约分的分数.给定 n(1 < n < 200)个非负整数(每个整数不超过3位),哪两个整数分别作为分子和分母能够构成最简真
python程序如下:
def HaveGongYue(a,b):
for i in range(a+1)[2:]:
if b % i == 0 and a % i == 0:
return True
return False
def test(l):
a = sorted(l)
la = len(a)
if la > 1 and a[0] == 0:
a = a[1:]
for i in range(la)[:-1]:
b = a[i]
for ii in range(i+1,la):
bb = a[ii]
if b == 1:
print "%d/%d" % (b,bb)
else:
if( not HaveGongYue(b,bb) ):
print "%d/%d" % (b,bb)
if __name__ == '__main__':
a = int(raw_input())
l = []
while a != 0:
l += [a]
a = int(raw_input())
test(l)