Algorism - 최대공약수와 최소공배수 (JavaScript)

tryhelloworld

최대공약수, 최소공배수.. 오랜만에 다시 보았네요 ㅋㅋㅋ

알고리즘 11. 최대공약수와 최소공배수 (JavaScript)

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다.

처음 나의 코딩

1) 우선 둘 중 작은 수를 minNum, 큰 수를 maxNum로 다시 세팅한다.

2) 최소공배수 : 두 수의 공통된 배수(공배수) 중 가장 작은 수
minNum * maxNum / 최대공약수

3) 최대공약수 : 두 수의 공통된 약수(공약수) 중 가장 큰 수
두 수를 나눠봐서 나머지가 0이면 (즉 나눠지면) maxNum가 최대 공약수이고,
나머지가 생긴다면 maxNum와 나머지값을 다시 비교합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function gcdlcm(a, b) {
var answer = [];
var minNum = Math.min(a, b);
var maxNum = Math.max(a, b);
answer[0] = gcd(minNum, maxNum);
answer[1] = lcm(minNum, maxNum);
return answer;
}
// 최대공약수
function gcd(minNum, maxNum){
return (minNum % maxNum) === 0 ? maxNum : gcd(maxNum, minNum % maxNum);
}
// 최소공배수
function lcm(minNum, maxNum){
return minNum * maxNum / gcd(minNum, maxNum);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(gcdlcm(3,12));
Share