์ต๋๊ณต์ฝ์(GCD)๋?
๋ ๊ฐ์ ์ ์ a, b์ ์ต๋๊ณต์ฝ์(GCD)๋ ๋ ์๋ฅผ ๋์์ ๋๋ ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์ ๋ฅผ ์๋ฏธํ๋ค.
1. O(n) ์๊ฐ ๋ณต์ก๋์ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (๋บ์ ๋ฐฉ์)
JavaScript ์ฝ๋:
function gcdSubtraction(a, b) {
if (a === b) return a;
return a > b ? gcdSubtraction(a - b, b) : gcdSubtraction(a, b - a);
}
2. O(log n) ์๊ฐ ๋ณต์ก๋์ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (๋๋จธ์ง ๋ฐฉ์)
JavaScript ์ฝ๋:
function gcd(a, b) {
return a % b === 0 ? b : gcd(b, a % b);
}
์ด ๋ฐฉ๋ฒ์ ๋น ๋ฅด๊ณ , ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ค.
3. ์ต์๊ณต๋ฐฐ์(LCM) ๊ณ์ฐ
์ต์๊ณต๋ฐฐ์(LCM)๋ ๋ ์ a, b์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
์ด ํจ์๋ O(log n) ์๊ฐ ๋ณต์ก๋๋ก ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
๋ฐ์ํ
๋๊ธ