[Progrmmers]最大公倍数と最小公倍数


私の答え

/*
최소공배수 Least common multiple
최대공약수 Greatest common factor

유클리드 호제법

최대공약수 구하기
큰수를 작은수로 나누었을 때 나누어 떨어지면 작은 수가 최대공약수이고
ex) 12 % 3 =0 -> 최대공약수 3

나누어 떨어지지 않는다면
ex) 12 % 5 = 2
그 나머지로 전의 작은수를 나누고 나누어 떨어지지 않는다면
    5 % 2 = 1
그 나머지로 전의 작은수를 나누고...(를 반복해서 나머지가 0이 되면 리턴)
    2 % 1 = 0 -> 최대공약수 1

최소공배수 구하기
두수를 곱하고 최대공약수로 나누면 최소 공배수가 나옴.
*/
function solution(n, m) {
    var answer = [];
    
    const GCF = (big,small) => { // 최대 공약수
        return small === 0? big : GCF(small, (big % small))
    }
    
    let big = Math.max(n, m)
    let small = Math.min(n, m)
    
    answer.push(GCF(big,small))
    answer.push(n*m/answer[0])
    
    return answer;
}

問題の説明


両手の
最大公約数と
最小公倍数の関数を返します.
アレイの最前面の最大公約数.
次に最小公倍数を加えて戻せばいいです.
例:
ダブル3、12
最大承諾数は3です.
最小公倍数は12です.
ソリューション(3,12)は[3,12]を返さなければなりません.

せいげんじょうけん


2つの数は1以上1000000以下の自然数です.

I/O例

n	m	return
3	12	[3, 12]
2	5	[1, 10]
は#1
上記のように.
はい#2
自然数2と5の最大承諾数が1であり、最小公倍数が10であるため、[1,10]を返さなければならない.