1. ์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ
1.1. ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋?
1.2. ๊ตฌํ
2. ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
2.1. ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์์ ๊ด๊ณ
2.2. ๊ตฌํ
1. ์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ
1.1. ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋?
์ต๋ ๊ณต์ฝ์(GCD)๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, gcd(a,b)์ (r=a%b๋ผ๊ณ ํ ๋), gcd(b,r)์ ์ต๋ ๊ณต์ฝ์๋ ๊ฐ๋ค.
์ฆ, gcd(a,b) == gcd(b,r)์ด๋ค.
์ด ์ฑ์ง์ ๋ฐ๋ผ gcd(a,b) == gcd(b, a%b) == gcd(a%b, (a%b)%b).... ๋ฐ๋ณตํ์ฌ ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋ ๋๋์ด์ง๋ ์๊ฐ a์ b์ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
์ ๋ฆฌํ์๋ฉด gcd(a,b) -> cdg(a, a%b) .... -> gcd(x, 0)์ด๋ฉด a์ b์ ์ต๋ ๊ณต์ฝ์๋ x์ด๋ค.
1.2. ๊ตฌํ
private static int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a%b);
}
2. ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
2.1. ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์์ ๊ด๊ณ
A,B์ ์ต๋๊ณต์ฝ์ = G, ์ต์๊ณต๋ฐฐ์ = L์ด๋ผ๊ณ ํ์.
A = Ga, B = Gb (a์ b๋ ์๋ก์์ด๋ค.)
L = Gab = AB/G
GL = ab
๋ฐ๋ผ์ ์ต์ ๊ณต๋ฐฐ์ L = a*b/G ์ด๋ค.
2.2. ๊ตฌํ
private static int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a%b);
}
private static int lcm(int a, int b) {
return a * b / gcd(a,b);
}