
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const [a, b] = fs
.readFileSync(path)
.toString()
.trim()
.split(' ')
.map(Number)
.sort((a, b) => a - b);
for (let i = a; i > 0; i--) {
if (b % i === 0 && a % i === 0) {
console.log(i);
console.log(i * (a / i) * (b / i));
break;
}
}
⏰ 소요한 시간 : 5분
두 수의 최대 공약수를 먼저 구해준다. a가 작은수 b를 큰 수로 입력받고 a부터 0까지 반복하여 b의 약수이면서 a의 약수인 i를 찾는다. 예를들어 입력이 12와 24라면 첫 반복만에 if문에 걸릴 것이다. 발견하면 i가 최대공약수일테니 바로 출력해주고, 최소공배수를 구해주면 된다. 최소공배수는 a와 b를 각각 i로 나눈 값과 i를 곱해주면 된다.