题目
【问题描述】
编程输出符合如下要求的自然数对:它们的和为667,它们的最小公倍数除以最大公约数的商为120。输出格式为每对一行,小数在前,大数在后,两数间用逗号分隔,多对则按每对中小数的大小升序排列先后。
【输入形式】
无输入。
【输出形式】
每个自然数对一行,小数在前,大数在后,两数间用逗号分隔,多对则按每对中小数的大小升序排列先后。
思路
设两数为i,(667-i),定义求最大公约数的函数循环到333,成立则输出
代码
g=0
def gys(x,y):
if x > y:
s = y
else:
s = x
for i in range(1, s + 1): #range(s)会出现0作为除数
if (x % i == 0) and (y % i == 0):
a = i
return a
for h in range(1,334):
a = 667 -h
if h*a == 120* gys(h,a)*gys(h,a):
print(h,",",a)
Python真是妙啊