69. 파이썬 표준 라이브러리 math.gcd math.lcm

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 포스팅에서는 파이썬 표준 라이브러리 중 time 에 대해서 살펴보았습니다.
이번 포스팅에서는 파이썬 표준 라이브러리 중 math.gcd 와 math.lcm 에 대해 공부해 보도록 하겠습니다.

파이썬 표준 라이브러리

math.gcd

math.gcd 함수는 최대 공약수(gcd, greatest common divisor)를 쉽게 구해주는 함수 입니다.
math.gcd 함수는 파이썬 3.5 버전이상부터 사용할 수가 있습니다.

최대 공약수 에 대해 예전에는 알았지만 까먹은 분들을 위해 간단히 설명드리면
먼저 공약수(common divisor)는 두 수 이상의 여러 수의 공통 된 약수를 의미하게 됩니다.
예를 들면 30 과 15 는 공통으로 1, 3, 5, 15 라는 약수를 가지고 있습니다.
이것을 공약수라고 합니다.
이 공약수 중에서 가장 큰 공약수를 최대 공약수라고 합니다.
30 과 15 의 최대 공약수는 15가 됩니다.

다음 문제를 한 번 보겠습니다.
어린이집에서 사탕 60 개, 초콜렛 100 개, 젤리 80 개를 준비를 했습니다.
공평하게 모든 어린이들이 나누어 가지도록 봉지에 담아 나누어야 한다면 최대 몇 봉지까지 만들 수가 있을까요?
단, 사탕, 초콜렛, 젤리는 남기지 않고 모두 담도록 합니다.

이 문제는 60, 100, 80 의 최대 공약수를 구하면 바로 해결이 됩니다.
즉, 똑같이 나눌 수 있는 봉지 개수가 최대가 되는 수를 구하면 됩니다.

Python
>>> import math
>>> math.gcd(60, 100, 80)
20
>>>

파이썬의 버전이 3.9 이상이라면 math.gcd 의 인수로 위 처럼 여러개가 가능합니다.
하지만 3.9 버전 미만이라면 2 개 까지만 가능합니다.

위처럼 최대 공약수를 math.gcd 함수를 이용해서 구해보았습니다.
결론적으로 최대 20 봉지를 만들 수 있게 되고
각 봉지에 들어가는 사탕 과 초콜렛, 젤리의 갯수는 전체 개수를 20 으로 나누어서 구할 수가 있습니다.

Python
>>> 60 / 20, 100 / 20, 80 / 20
(3.0, 5.0, 4.0)
>>>

이렇게 한 봉지당 사탕 3 개, 초콜렛 5 개, 젤리 4 개씩 담으면 해결이 됩니다.

math.lcm

math.lcm 함수는 math.gcd 와는 반대 개념으로 최소 공배수를(lcm, least common multiple) 구할 때 사용되는 함수 입니다.
math.lcm 함수는 파이썬 3.9 버전부터 사용이 가능합니다.

최소 공배수에 대해서도 간략히 말씀 드리면 최대 공약수와는 반대로 두 개의 수의 공통된 배수 중 가장 작은 수를 의미 합니다.
예를 들면 3 과 5 의 최소 공배수는 15 가 됩니다.

예를 들어 버스 정류장에서 시내 버스는 15분 마다 도착을 하고 마을 버스는 25분 마다 도착을 한다고 했을 때, 오후 1시가 됐을 때 두 버스가 동시에 도착 한다고 하면 다음에 두 버스가 동시에 도착 할 시각을 알기 위해서는 어떻게 해야 할까요?

위 문제는 15 와 25 의 공통 배수 중 가장 작은 수, 즉 최소 공배수를 구하면 해결이 됩니다.

Python
>>> import math
>>> math.lcm(15, 25)
75
>>>

위 코드처럼 math.lcm 함수를 이용해서 15 와 25 의 최소 공배수 75 를 구했습니다.
오후 1시에 두 버스가 동시에 도착했다고 했었으니 다음에 동시에 도착할 시각은 75분 후가 되는 것입니다.
1시의 75분 후는 2시 15분이 되겠네요

이렇게 표준 라이브러리 math 의 최대 공약수와 최소 공배수를 구하는 math.gcd 와 math.lcm 함수에 대해 알아보았습니다.
math 라이브러리나 이전에 공부했던 time 라이브러리에는 상당히 많은 함수들이 존재합니다.
이번에 공부한 math.gcd 와 math.lcm 은 그 중 극히 일부분만 본 것임을 알고 계시기 바랍니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
69. 파이썬 표준 라이브러리 math.gcd math.lcm

Leave a Comment