<개인공부>/[Python]

[python] 파이썬 최대공약수, 최소공배수 함수 (gcd, lcm)

BlockDMask 2021. 5. 13. 00:30
반응형

안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 최대공약수와 최소공배수를 구할 수 있는 함수 gcd 함수와, lcm 함수에 대해서 알아보겠습니다.
파이썬에서는 정말 많은 게 함수로 되어있네요. 하하

<목록>
1. 파이썬 gcd 함수 (최대공약수)
2. 파이썬 lcm 함수 (최소공배수)
3. 파이썬 최대공약수, 최소공배수 함수 예제

 

1. 파이썬 최대 공약수 함수 gcd 설명


gcd 함수는 최초로 파이썬 버전 3.5에서 추가되었으며, 지금 설명은 파이썬 버전 3.9 기준으로 설명드리겠습니다.
(2021.05.12 기준 최신 버전)

파이썬 gcd 함수는 math 라이브러리에 속해있기 때문에 gcd 함수를 사용하기 위해서는 math 라이브러리를  import 해야 합니다.

1-1) math.gcd 함수 설명

* 함수 모양
math.gcd( 숫자들 )

* 함수 설명
gcd의 인자로 숫자들을 입력할 수 있습니다. 즉, 인자는 0개부터 N개 까지 올 수 있습니다.
gcd는 인자로 들어온 숫자들의 최대 공약수(정수)를 반환합니다.

인자가 0개인 경우 math.gcd() 일 때 함수의 반환 값은 0입니다.
모든 인자의 값이 0인 경우에도 math.gcd(0) 혹은 math.gcd(0,0,0.. 0)인 경우에도 함수의 반환 값은 0입니다.

 

1-2) math.gcd 함수 간단 사용법

import math # 꼭 해줘야 합니다.
math.gcd(3) # 3 반환
math.gcd(3, 6) # 3 반환
math.gcd(66, 22, 11) # 11 반환

* 최대 공약수란?
둘 이상의 정수의 공약수 중에서 가장 큰 것을 말합니다.
greatest common divisor 라 부르며 약자로 gcd 라 합니다. 이 약자를 그대로 함수 이름으로 사용하는 걸로 보입니다.

 

 

2. python 최소 공배수 함수 lcm 설명


lcm 함수는 파이썬 3.9 버전에서 추가된 아주 따끈따끈한 new 함수입니다. (2021.05.12 기준 최신 버전)

파이썬 lcm 함수도 마찬가지로 math 라이브러리에 4 때문에 lcm 함수를 사용하기 위해서는 math 라이브러리를  import 해야 합니다.

1-1) math.lcm 함수 설명

* 함수 모양
math.lcm ( 숫자들 )

* 함수 설명
lcm 함수도 인자로 여러 숫자들을 입력할 수 있습니다. 인자는 0개부터 N개 까지 올 수 있습니다.
숫자들은 1,2,3, 이런 식으로 나열을 해서 집어넣으면 됩니다.

lcm는 인자로 들어온 숫자들의 최소공배수를 반환합니다. 반환 값은 양의 정수입니다.

인자가 없는 경우(인자가 0개) 경우에, 즉 math.lcm() 은 함수의 반환 값은 1입니다.
인자 중에 하나라도 0인 경우에는 당연하게도 0이 반환됩니다. 0이 인자로 하나라도 있다면 최소 공배수를 반환하기 때문에 0을 반환하겠죠?

 

1-2) math.lcm 함수 간단 사용법

import math # 필수..!
math.lcm(2) # 2 반환
math.lcm(2, 4) # 4 반환
math.lcm(66, 22, 11) # 66 반환

* 최소 공배수란?
둘 이상의 정수의 공배수 중에서 가장 작은 것을 말합니다.
least common multiple을 줄여서 lcm이라 부르고, 이것으로 함수 이름을 정한 것으로 판단됩니다.

 

 

3. python 최소 공배수와 최대 공약수 함수 예제


3-1) 파이썬 최소공배수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import math
 
= math.gcd()
= math.gcd(024)
= math.gcd(105100)
print(f'math.gcd() : {a}')
print(f'math.gcd(0,2,4) : {b}')
print(f'math.gcd(10,5,100) : {c}\n')
 
= math.gcd(0)
= math.gcd(00)
= math.gcd(0000)
print(f'math.gcd(0) : {d}')
print(f'math.gcd(0,0) : {e}')
print(f'math.gcd(0,0,0) : {f}\n')
 
= math.gcd(3)
= math.gcd(363333)
= math.gcd(6622113344)
print(f'math.gcd(3) : {g}')
print(f'math.gcd(3,6,3,3,3) : {h}')
print(f"math.gcd(66,22,11,33,44) : {i}")
 
cs

앞서 말씀드린 것처럼 gcd()에 아무것도 들어있지 않은 경우에는 0을 반환하는 것을 확인할 수 있습니다.
또한 gcd(0), gcd(0, 0), gcd(0,0,0)에서 보신 것처럼 모두 0인 경우에도 0을 반환합니다.

그 외의 경우에는 최대 공약수를 잘 반환하는 것을 볼 수 있습니다.
아, 매개변수가 1개인 경우 math.gcd(3)의 결과처럼 그냥 자기 자신의 숫자가 나오는 것을 볼 수 있습니다.

 

 

3-2) 파이썬 최대공약수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import math
 
= math.lcm()
= math.lcm(024)
= math.lcm(105100)
print(f'math.lcm() : {a}')
print(f'math.lcm(0,2,4) : {b}')
print(f'math.lcm(10, 5, 100) : {c}\n')
 
= math.lcm(0)
= math.lcm(00)
= math.lcm(0000)
print(f'math.lcm(0) : {d}')
print(f'math.lcm(0,0) : {e}')
print(f'math.lcm(0,0,0) : {f}\n')
 
= math.lcm(0)
= math.lcm(361333)
= math.lcm(6622113344)
print(f'math.lcm(3) : {g}')
print(f'math.lcm(3,6,1,3,3) : {h}')
print(f"math.lcm(66,22,11,33,44) : {i}")
 
cs

lcm()처럼 인자가 하나도 없는 경우에는 1을 반환하는 것을 볼 수 있습니다.
math.lcm(0,2,4)를 보면 0이 하나라도 들어간 경우 최대공약수로 0을 반환하는 것을 볼 수 있습니다.
또한, 인자가 1개인 경우 math.lcm(3)의 반환처럼 0을 반환하는 것을 알 수 있습니다.

그 외의 경우에는 최대 공약수를 잘 반환하는 것을 확인할 수 있습니다.

 

 

이렇게 해서 파이썬에서 최대공약수 함수인 gcd 함수와, 최소공배수 함수인 lcm 함수에 대해서 알아보았습니다.
이렇게 유용한 함수도 만들어 두었다니 ~ 파이썬 섬세함 짱짱맨~

반응형