프로그래머스
[1단계] 최대공약수와 최소공배수
chsua
2022. 11. 16. 15:37
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
- 두 수는 1이상 1000000이하의 자연수입니다.
내 답안: 소인수분해
function solution(n, m) {
let matchMax = 1 ;
let i = 2 ;
while ((i <= n) && (i <= m)) {
if ((n%i==0)&&(m%i==0)) {
matchMax *= i ;
n/= i ;
m/= i ;
} else {
i += 1 ;
}
}
let matchMin = matchMax*n*m;
return [matchMax, matchMin];
}
>2부터 공통으로 나누어지는 수를 계속 곱함/안되면 i를 1씩 높임
>> 유클리드 호제법: 최대공약수를 구하는 방법
>> 유클리드 호제법을 이용해 최소공배수를 구하는 방법: m * n = 최대공약수(GCD) * 최소공배수(LCM) 이 성립
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
유클리드 호제법 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란
ko.wikipedia.org