[BJ / 2609] 최대공약수와 최소공배수

Lainlnya·2023년 3월 31일
0

BaekJoon

목록 보기
15/37

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 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;
}
profile
Growing up

0개의 댓글