두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
유클리드 호제법을 이용해 최대공약수를 구한 뒤,
두 수의 곱에서 최대공약수를 나눈 최소공배수를 구했다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
input = line.split(' ').map((el) => parseInt(el));
});
rl.on('close', () => {
console.log(solution(input));
});
function solution(nums) {
let [b, s] = nums[0] < nums[1] ? [nums[1], nums[0]] : [nums[0], nums[1]];
while (b % s !== 0) {
[b, s] = [s, b % s];
}
return s + '\n' + (nums[0] * nums[1]) / s;
}