題目
【問題描述】
編程輸出符合如下要求的自然數對:它們的和爲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真是妙啊