์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋ ๋ค์์ ์ฑ์ง์ ์ด์ฉํ์ฌ ์ต๋๊ณต์ฝ์ (Greatest Common Divisor, GCD) ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค:
๋ ์ A์ B๊ฐ ์๋ค๊ณ ํ์ (A > B) ์ด ๋, A์ B๋ฅผ ๋๋ ๋๋จธ์ง R์ด๋ผ๊ณ ํ ๋,
A์ B์ ์ต๋ ๊ณต์ฝ์๋ B์ R์ ์ต๋ ๊ณต์ฝ์์ ๊ฐ๋ค.
ํ ๋ง๋๋ก GCD(A,B) = GCD(B, R)์ด ์ฑ๋ฆฝํ๋ค๋ ๊ฑด๋ฐ, ์กฐ๊ธ ์๊ฐํด๋ณด๋ฉด ์ด ํน์ง์ผ๋ก๋ถํฐ ์ฌ๊ท์ ์ธ ์ฑ์ง์ ๋์ถํ ์ ์์์ ์ ์ ์๋ค. ์ฆ, B๊ณผ R ์ญ์ B > R์ด ์ฑ๋ฆฝํ๋ฏ๋ก B๋ฅผ R๋ก ๋๋ ๋๋จธ์ง๋ฅผ X๋ผ๊ณ ํ๋ฉด
๊ฒฐ๊ตญ GCD(A,B) = GCD(B,R) = GCD(R,X) = ... ์ด ์ฑ๋ฆฝํ๋ค. ์ด ๋, ๋ ๊ฐ์ ๋๋ ๋๋จธ์ง๊ฐ 0์ผ ๋ ๊ฐ๋ค์ ์ฝ์๋ ํ๋์ด๋ฏ๋ก ์ต์ข ์ ์ผ๋ก ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, GCD(6, 4) = GCD(4, 2) = GCD(2, 0) = 2 ์ด๋ฏ๋ก
B ๊ฐ์ด 0์ด ๋ ๋๊น์ง ์ฃผ์ด์ง ๋ ์์ ๋๋จธ์ง์ ๋ํ GCD๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๊ตฌํ ์ ์๋ค.
์ด๊ฑธ ์ฝ๋๋ก ๊ตฌํํ๋ฉด
def GCD(A, B):
""" A > B """
if B == 0: return A
return GCD(B, A%B)
๋ โผ๏ธ
'IN DEPTH CAKE > Coding-WIKI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Hello! c++] constexpr const char *์ ๋ํด์ (51) | 2024.04.21 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์ด์ง ํ์ (Binary Search) - ์ค๋ณต๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๊น์ง ์ดํด๋ณด๊ธฐ (12) | 2023.07.24 |
[๋ชจ์ ๋๊ณ ๋งํด๋ณด์] ์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ (0) | 2023.05.29 |
sphinx-js ๋ก javascript ์ฝ๋ ๋ฌธ์ํํ๊ธฐ (0) | 2023.05.03 |
No module named 'tensorboard' ํด๊ฒฐ (0) | 2023.03.28 |