최대공약수와최소공배수
https://school.programmers.co.kr/learn/courses/30/lessons/12940
📔 문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
💡 입출력 예
n | m | result |
---|---|---|
3 | 12 | [3, 12] |
2 | 5 | [1, 10] |
💻내가 작성한 코드
- n 이랑 m 나머지 0이 되는 index 찾기 = 최대공약수
- n * m / 최대공약수 = 최소공배수
1
2
3
4
5
6
7
8
9
10
11
function solution(n, m) {
let max ;
for(let i = Math.max(n,m); i >0; i--){
if(n % i === 0 && m % i === 0){
max = i;
break;
}
}
const min = (n * m) / max
return= [max, min]
}
💻다른 사람 코드
- r은 n & m 의 나머지
- 조건식 : r = n % m
- 증감식 : a = b, b = r
1
2
3
4
5
function gcdlcm(a, b) {
var r;
for (var ab = a * b; (r = a % b); a = b, b = r) {}
return [b, ab / b];
}
1
2
3
4
5
6
// 실행코드
a=2 , b=5
ab=10, a=2 , b=5, r=2
ab=10, a=5, b=2, r=1
ab=10, a=2, b=1, r=0
return [1, 10]
This post is licensed under CC BY 4.0 by the author.