GCD(Greatest Common Divisor) ์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์ฌ์ฉ
def gcd(a, b):
while b:
a, b = b, a % b
return a
a = b x q + r ์ด๋ผ๊ณ ํ์ ๋, GCD(a, b) = GCD(b, r)๋ฅผ ๋ง์กฑํ๋ค.
๊ฐ๋จ ์ฆ๋ช :
์ํ์ ์ผ๋ก ์ฆ๋ช ํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ์ดํด๋ฅผ ์ํด์ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค.
b = r x m + n์ผ๋ก ํํํ ๋, n์ด 0์ด๋ผ๋ฉด b = rm์ผ๋ก ํํ๋๋ค. ์ฆ, b์ r์ ์ต๋ ๊ณต์ฝ์ GCD(b, r) = m์ด ๋๋ค.
a = bq + r = rmq + r = r(mq + 1) ์ด๋ฏ๋ก GCD(a, b) = r ์ด๋ค.
=> GCD(a, b) = GCD(b, r) = GCD(r, 0) = r
LCM(Lowest Common Multiple) ์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ
def lcm(a, b):
return a // gcd(a, b) * b
a์ b์ ์ต๋ ๊ณต์ฝ์ GCD(a, b) = m์ด๋ผ๊ณ ํ์ ๋,
a = Am, b = Bm์ผ๋ก ํํ ํ ์ ์๋ค.
์ด๋, ์ต๋ ๊ณต์ฝ์(M) = ABm ์ด๋ค.
๋ฐ๋ผ์ a % m * b = Am % m * Bm = ABm์ด ๋๋ค.