최대공약수, 최소공배수
최대공약수 구하기
def gcd(a, b):
if a == 0:
return b
return gcd(b%a, a) # a == b%a로, b == a로.
# 큰 수를 작은 수로 나눈 나머지를 다시 작은 수로 나누기. 나머지가 0이 될 때까지 반복
t = int(input())
for i in range(t):
a, b = map(int, input().split())
res = gcd(a, b)
print(abs(res))
최대공약수, 최소공배수 구하기
divisors = [] # 공약수를 리스트로
a, b = map(int, input("두 숫자를 입력하세요(빈 칸으로 띄어쓰기) > ").split())
for n in range(1, max(a, b)+1): # 1부터 두 숫자 중 큰 숫자까지 차례로 n값에 대입
if a % n == 0 and b % n == 0:
divisors.append(n) # 공약수를 divisors 리스트에 추가
gcd = max(divisors) # 최대공약수
lcm = int(a * b / gcd) # 최소공배수. 두 수의 곱을 최대공약수로 나눈 값
print(gcd, lcm)
다른 방법 (math 모듈의 gcd 함수 사용하기)
from math import gcd
t = int(input())
for _ in range(t):
a, b = map(int, input().split())
print(a * b // gcd(a, b), gcd(a, b))
# 최소공배수 : 두 수를 곱한 값을 두 수의 최대공약수로 나눈 값