求最大公约数和最小公倍数
最大公约数
"""
最大公约数的求法:
64 48
"""
x = int(input('x='))
y = int(input('y='))
if x>y:
x,y = y,x
for factor in range(x,0,-1):
if x%factor==0 and y%factor==0:
print('{}和{}的最大公约数是{}'.format(x,y,factor))
break
x=24
y=36
24和36的最大公约数是12
·
法二:2⃣️
辗转相除法:
144 108
36
108 36
0
"""
x = int(input('x='))
y = int(input('y='))
if x>y:
x,y = y,x
while x!=0:
temp = y%x
y = x
x = temp
print(y)
"""
# easier edition
x = int(input('x='))
y = int(input('y='))
if x>y:
x,y = y,x
c,d = x,y
while x!=0:
y,x = x,y%x
print('{}和{}的最大公约数是{}'.format(c,d,y))
x=260
y=138
138和260的最大公约数是2
·
·
·
最小公倍数
法一:先求出最大公倍数,再求出最小公倍数
# 最小公倍数
# first solution
x = int(input('x='))
y = int(input('y='))
if x>y:
x,y = y,x
for factor in range(x,0,-1):
if x%factor==0 and y%factor==0:
n = x*y//factor
print('{}和{}的最小公倍数是{}'.format(x,y,n))
break
x=28
y=42
28和42的最小公倍数是84
法二:同样用辗转相除法
#second solution
x = int(input('x='))
y = int(input('y='))
if x>y:
x,y = y,x
c,d = x,y
while x!=0:
y,x = x,y%x
n = c*d//y
print('{}和{}的最小公倍数是{}'.format(c,d,n))
x=82
y=58
58和82的最小公倍数是2378