문제
https://programmers.co.kr/learn/courses/30/lessons/12940
접근
- n > m 일 경우를 생각한다.
- 약수의 배열을 만든다.
- 두 수를 i=2부터 나누기 시작해서 두 수 모두 나눠지면 i로 계속 나누고
- 두 수 모두 i로 나눠지지 않는다면 i++
코드
📌 python
from functools import reduce
def solution(n, m):
i_list = [1]
if n <= m :
x = n
y = m
else :
x = m
y = n
i=2
while(i <= x) :
if(x%i==0 and y%i==0) :
i_list.append(i)
x = x/i
y = y/i
else :
i += 1
GCD = reduce(lambda a,b: a*b, i_list)
return [GCD, GCD*x*y]
📌 js
function solution(n, m) {
let x, y = 0
const iList = [1]
if(n <= m) {
x = n;
y = m;
} else {
x = m;
y = n;
}
let i=2;
while(i<=x) {
if(x%i==0 && y%i==0) {
iList.push(i)
x = x/i
y = y/i
} else {
i++;
}
}
const GCD = iList.reduce((a,b) => a*b);
return [GCD, GCD*x*y]
}