프로그래머스 문제를 푸는 과정에서 최소공배수가 필요하여 math.lcm을 사용했으나
attributeerror: module 'math' has no attribute 'lcm' 와 같은 오류가 발생하였다.
lcm은 python 3.9 버전부터 사용이 가능한 메소드이기 때문에 이럴 때에는 다른 방법으로 최소공배수를 구해야 한다.
두 수가 주어졌을 때 최소공배수는 두 수의 곱을 최대공약수로 나누어 구할 수 있다.
$$ lcm(a, b) = \frac{a \times b}{gcd(a, b)} $$
예를 들어, 6과 4의 최소공배수를 구하면 다음과 같다.
1) 두 수의 곱 $ 6 \times 4 = 24 $
2) 두 수의 최대공약수 $ gcd(6, 4) = 2 $
3) 두 수의 최소공배수 $ \frac{24}{2} = 12$
위 과정을 코드로 구현하면 다음과 같다.
def lcm(a,b):
return (a * b) // math.gcd(a,b)
3.8 이하 버전에 최대공약수를 구하는 메소드인 math.gcd는 있기 때문에 두 수의 곱을 최대공약수로 나눠주기만하면 최소공배수를 구할 수 있다.
3.5 이하 버전에 대해서는 아래 스택오버플로우를 참고하면 좋을 것 같다.
반응형