logic
- 최대 공약수 : 유클리드 호제법
- 두 수 a와 b가 있을 때, b가 0이 되기 전까지 a를 b로 나누어준 나머지가 최대 공약수가 된다
- 최소 공배수 : 두 수를 곱해준 값을 최대 공약수로 나눈 값이 최대 공약수가 된다
- 24 18
- 24 = 2 x 2 x 3
- 18 = 2 x 3 x 3
- 최소 공배수 = (2 x 2 x 3) x (2 x 3 x 3) / (2 x 3)
= 3 x 2 x 3 x 3 = 72
//https://www.acmicpc.net/problem/2609
{
const N: string | null = prompt(
"숫자 두개를 띄어쓰기로 구분해서 입력해주세요."
);
if (N) {
const numbers: Array<number> = N.split(" ").map((v) => parseInt(v));
if (numbers.length === 2) {
//유클리드 호제법 :최대공약수 구하기
const get_gcd = (n: Array<number>): number => {
const a: number = n[0];
const b: number = n[1];
if (b == 0) {
return a;
}
return get_gcd([b, a % b]);
};
//최소 공배수 구하기
const get_lcm = (numbers: Array<number>, g: number) => {
const mult: number = numbers.reduce((nxt, prv) => nxt * prv, 1);
return mult / g;
};
const gcd: number = get_gcd(numbers);
console.log(gcd);
console.log(get_lcm(numbers, gcd));
} else {
console.log("입력값의 개수가 부족합니다.");
}
}
}
/*
input
24 18
output
6
72
*/
``