티스토리 뷰

https://www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰

www.acmicpc.net

 

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split('\n').map(v=>+v);
input.pop();
const answer = [];

let prime = new Array(1000001).fill(true)

const temp_sqrt =  Math.ceil(Math.sqrt(1000001));
prime[0] = false;
prime[1] = false;
for(let i =2; i<temp_sqrt; i++){
  if(!prime[i])continue;
  let flag = true;
  for(let j = 2; j<i; j++){
    if(i%j==0){
      flag = false;
      break;
    }
  }
  if(flag){
    for(let k = i+i; k<=1000000; k+=i){
      prime[k]=false
    }
  }
}
prime[2]=false;
const prime_list = [];
prime.forEach((v,i)=>{
  if(v){
    prime_list.push(i)
  }
})


input.forEach(v=>{
  for(let i = 0; i<prime_list.length; i++){
    if(prime_list[i]>v){
      answer.push(`Goldbach's conjecture is wrong.`);
    }
    let possible = false;
    for(let j = 0; j<prime_list.length; j++){
      if(prime_list[i]+prime_list[j]>v){
        break;
      }
      if(prime_list[i]+prime_list[j]==v){
        answer.push(`${v} = ${prime_list[i]} + ${prime_list[j]}`);
        possible = true;
      }
    }
    if(possible){
      break;
    }
  }
})

console.log(answer.join('\n'))
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함