
let getGCD = (num1, num2) => {
let gcd = 1;
for(let i=2; i<=Math.min(num1, num2); i++){
if(num1 % i === 0 && num2 % i === 0){
gcd = i;
}
}
return gcd;
}
let getLCM = (num1, num2) =>{
let lcm = 1;
while(true){
if((lcm % num1 == 0) && (lcm % num2 == 0)){
break;
}
lcm++;
}
return lcm
}
let getGCD = (num1, num2) => (num2 > 0 ? getGCD(num2, num1 % num2) : num1);
let getGCD2 = (num1, num2) => {
while(num2 > 0){
let r = num1 % num2;
num1 = num2;
num2 = r;
}
return num1;
}
function solution(num1, num2) {
const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
const lcm = (a, b) => a * b / gcd(a, b);
return [gcd(num1, num2), lcm(num1, num2)];
}
✅ 프로그래머스 문제 - 숫자카드 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/135807
function solution(arrayA, arrayB) {
function gcd(n1, n2) {
return n1 % n2 === 0 ? n2 : gcd(n2, n1 % n2);
}
function tmp(arrayA, arrayB) {
let gcdA = 0;
arrayA.sort((a, b) => a - b);
arrayA.forEach((A) => (gcdA = gcd(gcdA, A)));
if (arrayB.some((B) => B % gcdA === 0)) return 0;
return gcdA;
}
let A = tmp(arrayA, arrayB);
let B = tmp(arrayB, arrayA);
return Math.max(A, B);
}