

# 최대공약수 구하기
def gcd(a, b):
# b가 0이면 a가 최대 공약수
if b == 0:
return a
else:
# a를 b로 나눈 나머지를 구하여 재귀호출
return gcd(b, a % b)
a, b = map(int, input().split()) # 두 수 입력, a > b
result = gcd(a, b)
print(result)
from math import gcd
a, b = map(int, input().split()) # 두 수 입력
result = gcd(a, b)
print(result)
# 최대공약수 구하기
def gcd(a, b):
# b가 0이면 a가 최대 공약수
if b == 0:
return a
else:
# a를 b로 나눈 나머지를 구하여 재귀호출
return gcd(b, a % b)
a, b = map(int, input().split()) # 두 수 입력, a > b
lcm = a * b // gcd(a, b)
print(lcm)
from math import gcd
a, b = map(int, input().split()) # 두 수 입력
lcm = a * b // gcd(a, b)
print(lcm)
lcm 함수도 추가되었다.from math import lcm
a, b = map(int, input().split()) # 두 수 입력
result = lcm(a, b)
print(result)
해를 구하고자 하는 방정식이 ax + by = c(a, b, c, x, y 는 정수) 와 같을 때 방정식의 해 x, y 를 구하는 알고리즘은 다음과 같다.
x = y', y = x' - y' * q를 역계산한다.x'는 이전 x, y'는 이전 y를 의미하고 q는 현재 몫을 의미한다.x, y는 이전 값이 없으므로 x', y'를 각각 1, 0으로 지정하여 역계산을 진행한다.x, y는 ax + by = gcd(a, b)를 만족한다.c / gcd(a, b) = K를 가정하면 최초 방정식의 해는 Kx, Ky가 된다.5x + 9y = 2 일 때 만족하는 정수 x, y를 구해보자.


x = y', y = x' - y' * q를 역계산한다.x'는 이전 x, y'는 이전 y를 의미하고 q는 현재 몫을 의미한다.x, y는 이전 값이 없으므로 x', y'를 각각 1, 0으로 지정하여 역계산을 진행한다.
ax + by = gcd(a, b)를 만족한다.c / gcd(a, b) = K 를 가정하면 최초 방정식의 해를 구할 수 있다.c = 2, gcd(a, b) = 1 이므로 K = 2 이다.Kx, Ky는 각각 2*2 = 4, 2 * (-1) = -2 가 된다.a, b, c = map(int, input().split()) # ax + by = c 일 때 세 수 입력
# 유클리드 호제법을 이용한 최대 공약수 구하기
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def solve(a, b):
result = [0] * 2 # x, y를 저장할 배열
# x', y' 초기 값 설정
if b == 0:
result[0] = 1
result[1] = 0
return result
q = a // b # q = a를 b로 나눈 몫
v = solve(b, a % b) # 재귀 형태로 유클리드 호제법 수행
# 역순으로 올라오며 x, y 계산
result[0] = v[1]
result[1] = v[0] - v[1] * q
return result
# c가 최대공약수의 배수가 아니라면 방정식의 해를 구할 수 없음
if c % gcd(a, b) != 0:
print(-1)
else: # 방정식의 해 구하기
k = int(c / gcd(a, b))
ret = solve(a, b)
x = k * ret[0]
y = k * ret[1]
print(x, y)