1. for문 활용

a, b = 12, 10

# GCD - 최대공약수
for i in range(min(a,b), 0, -1):
    if a % i == 0 and b % i == 0:
        gcd = i
        break

# LCM - 최소공배수
for i in range(a*b, 0, -1):
    if i % a == 0 and i % b == 0:
        lcm = i
        break

2. 유클리드 호제법 활용

a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다

 

위 정의에 따라, r가 0일때의가 최대공약수가 된다. 또한, 두 수의 곱을 최대공약수로 나눈 값이 최소공배수가 된다. 

# GCD - 최대공약수
def GCD(a, b):
    while b > 0:
        a, b = a // b, a % b
    return a
    
# LCM - 최소공배수
def LCM(a, b):
    return (a*b) // GCD(a, b)

3. Math 라이브리러리 활용

import math

a,b = 12, 10
gcd = math.gcd(a, b)
lcm = math.lcm(a, b)

'코딩테스트 > Python' 카테고리의 다른 글

구간 합 (Prefix Sum)  (0) 2023.07.04
[Data Structure] 트리  (0) 2023.03.30
[Baekjoon] 1992. 쿼드트리  (0) 2023.01.30
[Baekjoon] 1389. 케빈 베이컨의 6단계 법칙  (0) 2023.01.30
[Programmers] Level 3. 경주로 건설  (0) 2023.01.20

+ Recent posts