두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
function solution(n, m) {
var answer = [];
return answer;
}
function solution(a, b) {
return [gcd(a, b), lcm(a, b)];
}
function lcm(a, b){
return (a * b) / gcd(a, b);
}
function gcd(a, b){
if(b == 0) return a;
return a > b ? gcd(b, a % b) : gcd(a, b % a);
}
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
function gcd(a, b) {return b ? gcd(b, a % b) : Math.abs(a);}
function lcm(a, b) {return (a * b) / gcd(a, b);}
function gcdlcm(a, b) {
return [gcd(a, b),lcm(a, b)];
}
b가 true일 때, 즉 0이 아니라면 자기 자신을 호출해 인자로 b, a % b를 넘겨 준다.
b가 false일 때는 Math.abs(a)를 리턴한다.
유클리드 호제법
유클리드 호제법이란?
큰 두 수가 있을 때, 최대공약수를 구하기 위해 사용된다.
A를 B로 나눈 나머지를 r이라고 할 때, A와 B의 최대공약수는 B와 r의 최대공약수와 같다.
유클리드 호제법 알고리즘?
1. 매개변수로 a,b를 받는다.
2. b가 0이라면 a가 최대공약수
3. b가 0이 아니라면, 1의 매개변수에 'b'와 'a%b'를 전달한다.
4. 위 내용을 반복한다.
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12940
참고 페이지 :
1. https://themarketer.tistory.com/63
2. https://gobae.tistory.com/25
3. https://jaypedia.tistory.com/43