문제
https://school.programmers.co.kr/learn/courses/30/lessons/135807
아이디어
- 각 배열 
arrayA와arrayB의 모든 원소를 나누어 떨어지게 하는 약수 배열divisorsA과divisorsB를 만든다. - 자신의 모든 원소를 나누어 떨어지면서, 상대의 모든 원소는 나누어 떨어지지 않는 최대 값을 구한다.
 
소스코드
// 배열의 모든 원소를 나누어 떨어지게 하는 모든 약수를 구하는 함수
function getDivisors(array) {
  const result = [];
  for (let i = 1; i <= array[0]; i++) {
    if (array.every(v => v % i === 0)) {
      result.push(i);
    }
  }
  return result;
}
// 약수 중에서 상대 배열의 모든 원소를 나누어 떨어지지 않게 하는 최대 원소를 구하는 함수
function getMaxResult(divisors, targets) {
  let result = 0;
  for (let i = 0; i < divisors.length; i++) {
    const div = divisors[i];
    if (targets.every(v => v % div !== 0)) {
      result = div;
      break;
    }
  }
  return result;
}
function solution(arrayA, arrayB) {
  // arrayA와 arrayB를 오름차순으로 정렬한다.
  arrayA = arrayA.sort((a, b) => a - b);
  arrayB = arrayB.sort((a, b) => a - b);
  // 각각의 배열의 모든 원소가 나눠 떨어지는 값을 기록하고 내림차순 정렬한다.
  let divisorsA = getDivisors(arrayA);
  let divisorsB = getDivisors(arrayB);
  divisorsA = divisorsA.sort((a, b) => b - a);
  divisorsB = divisorsB.sort((a, b) => b - a);
  // 자신의 모든 원소는 나눠 떨어지면서, 상대의 모든 원소는 나눠 떨어지지 않게 하는 최대 값을 출력한다.
  return Math.max(getMaxResult(divisorsA, arrayB), getMaxResult(divisorsB, arrayA));
}