// 소수 구하기
let prime = [];
let isPrime = true;

for(let i = 2; i < 100; i++){
   for(let j = 2; j < i; j++){
     if(i % j == 0){
       isPrime = false;
     }
   }
   if(isPrime){
     prime.push(i);
   }
   isPrime = true;
}

let val = parseInt(prompt('숫자를 입력하세요:'), 10);

let 골드바흐파티션 = [];

for(let n of prime){
  if(prime.includes(val - n) && n <= (val - n)){
    골드바흐파티션.push([n, val - n])
  }
}

let 차 = 골드바흐파티션.map(e => e[1] - e[0]);

let 작은값 = 골드바흐파티션[차.indexOf(Math.min.apply(null,차))];
let 큰값 = 골드바흐파티션[차.indexOf(Math.max.apply(null,차))];

console.log(골드바흐파티션);
console.log(작은값);
console.log(큰값);

+) 에라토스테네스의 체

function prime_list(n){
    //에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
    let sieve = []
    for(let i = 2; i < n; i++){
      sieve.push(true);
    }

    //n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사
    let m = parseInt(n ** 0.5, 10);
    for(let i = 2; i < m + 1; i++){
        if (sieve[i] == true){      // i가 소수인 경우 
          for(let j = i+i; j < n; j+=i){ // i이후 i의 배수들을 False 판정
                sieve[j] = false;
            } 
        }
    }

    // 소수 목록 산출
    let prime = [];
    for(let i = 2; i < n; i++){
      if (sieve[i] == true){
        prime.push(i);
      }
    }

    return prime;
}