본문 바로가기
Algorythms

백준 11502번 세 개의 소수 문제 c++ 풀이

by 준형코딩 2024. 2. 4.

문제

정수론(수학)에서, 세 개의 소수 문제(3-primes problem) 는 다음과 같은 추측을 말한다.

'5보다 큰 임의의 홀수는 정확히 세 개의 소수들의 합으로 나타낼 수 있다. 물론 하나의 소수를 여러 번 더할 수도 있다.'

예를 들면,

  • 7 = 2 + 2 + 3
  • 11 = 2 + 2 + 7
  • 25 = 7 + 7 + 11

5보다 큰 임의의 홀수를 입력받아서, 그 홀수가 어떻게 세 소수의 합으로 표현될 수 있는지 (또는 불가능한지) 알아보는 프로그램을 작성하시오.

입력

첫째 줄에 T(Test Case의 수를 의미함)가 주어진다.

입력은 T개의 Test Case로 이루어진다.

각 Test Case는 하나의 정수 K (7 ≤ K < 1,000, K는 홀수)로 구성된다.

출력

T줄에 걸쳐서, 각 줄에 K가 어떻게 세 소수의 합으로 표현되는지 출력해야 한다.

가능하다면 그 세 소수를 오름차순 정렬하여 출력하면 된다.

여러 개의 답이 가능하다면 그 중 하나만 출력하면 되고, 만약 불가능하다면 0을 출력한다.

예제 입력 1 복사

3
7
11
25

예제 출력 1 복사

2 2 3
2 2 7
5 7 13
 
에라토스테네스의 체로 소수를 구한 후 3중 for문을 돌려서 브루트포스로 값을 구하면 되는 문제.
플레티넘 같은 어려운 문제들을 풀다가 이런 문제를 보면 3중 for문으로 간단학 해결할 문제인데 아예 이런 해결법을 배제하고 문제를 풀게 되는 것 같다. 간단하게 해결할 수 있는 것들을 어렵게 풀지 않는 습관을 들이자.