Computer Science/μκ³ λ¦¬μ¦
GCD(μ΅λ 곡μ½μ), LCM(μ΅μ 곡배μ) ꡬνκΈ°
μ΅λ³΅
2021. 11. 2. 22:19
μ΅λ 곡μ½μ ꡬνκΈ°
μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ΄λ?
μ΅λ 곡μ½μ(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μ΄λ€.
ꡬν
private static int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a%b);
}
μ΅μ 곡배μλ₯Ό ꡬνλ λ°©λ²
μ΅λ곡μ½μμ μ΅μ곡배μμ κ΄κ³
A,Bμ μ΅λ곡μ½μ = G, μ΅μ곡배μ = Lμ΄λΌκ³ νμ.
A = Ga, B = Gb (aμ bλ μλ‘μμ΄λ€.)
L = Gab = AB/G
GL = ab
λ°λΌμ μ΅μ 곡배μ L = a*b/G μ΄λ€.
ꡬν
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);
}