치춘짱베리굿나이스
[백준] 2609 본문
최대공약수와 최소공배수
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
풀이
const getGCD = (main, div) => {
if (div === 0) return main;
else return getGCD(div, main % div);
};
const gcdlcm = () => {
let input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split(" ")
.map((n) => {
return parseInt(n);
});
let main, divider;
input[0] > input[1]
? ((main = input[0]), (divider = input[1]))
: ((main = input[1]), (divider = input[0]));
let gcd = getGCD(main, divider);
console.log(`${gcd}\n${(input[0] * input[1]) / gcd}`);
};
gcdlcm();
반성회
유클리드 호제법을 사용하는 문제
최대공약수
- 두 수
a
,b
중 작은 수b
로 큰 수a
를 나눈 나머지b % a
를b
에 대입하고,b
를a
에 대입 b
가 0이 될 때까지 반복
- 두 수
최소공배수
a
와b
를 곱하여 최대공약수로 나누기
'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글
[백준] 1181 (0) | 2022.02.08 |
---|---|
[백준] 1436 (0) | 2022.02.08 |
[백준] 2751 (0) | 2022.02.08 |
[백준] 15088 (0) | 2022.02.08 |
[백준] 3986 (0) | 2022.02.08 |
Comments