• toc {:toc}

๋ฌธ์ œ

1๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ย ์ค‘์—์„œ ย 1๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๋Š” ์ž์—ฐ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 5๋Š” 1๊ณผ 5๋ฅผ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ, 6์€ 6 = 2 ร— 3 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก์€ ์œ ๋ช…ํ•œ ์ •์ˆ˜๋ก ์˜ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋กœ, 2๋ณด๋‹ค ํฐ ๋ชจ๋“  ์ง์ˆ˜๋Š” ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜๋ฅผ ๊ณจ๋“œ๋ฐ”ํ ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๋˜, ์ง์ˆ˜๋ฅผ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„์„ ๊ทธ ์ˆ˜์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7์ด๋‹ค. 10000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ย ๋ชจ๋“  ์ง์ˆ˜ n์— ๋Œ€ํ•œ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์€ ์กด์žฌํ•œ๋‹ค.

2๋ณด๋‹ค ํฐ ์ง์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋งŒ์•ฝ ๊ฐ€๋Šฅํ•œ n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ๋‘ ์†Œ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ์ง์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ์ฃผ์–ด์ง„ n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ˆ˜๋Š” ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ๋จผ์ € ์ถœ๋ ฅํ•˜๋ฉฐ, ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

์ œํ•œ

  • 4 โ‰ค n โ‰ค 10,000

์ถœ์ฒ˜:https://www.acmicpc.net/problem/9020

ํ’€์ด

  1. ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ํŒŒํ‹ฐ์…˜์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ๋‘์†Œ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค. โ†’ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” N/2, ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ ์ˆ˜(gol)๋ถ€ํ„ฐ ์ฐพ์•„๋‚˜๊ฐ€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
  2. ๋งŒ์•ฝ gol์ด ์†Œ์ˆ˜๋ผ๋ฉด N-gol์ธ ์ˆ˜(den)๊ฐ€ ์†Œ์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํŒŒํ‹ฐ์…˜์ด ์™„์„ฑ๋œ๋‹ค.
  3. ๋งŒ์•ฝ gol์ด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, den์ด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด gol์˜ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ๋‚ฎ์ถฐ์ค€๋‹ค.
#include <iostream>
 
// ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก
// ์ค‘์•™์—์„œ๋ถ€ํ„ฐ ์ฐพ์•„๊ฐ€๋Š” ๋ฐฉ์‹. ex) 10 -> 5+5
 
using namespace std;
 
bool is_prime(int n);
 
int main() 
{
  	int T, n, gol, den;
	cin >> T;
	for(int i=0; i<T; i++)
	{
		cin >> n;
		gol = n/2;
		while(true)
		{
			if(is_prime(gol))
			{
				den = n-gol;
				if(is_prime(den))
				{
					cout << gol << " " << den << endl;
					break;
				}
				else
				{
					gol--;
				}
			}
			else
			{
				gol--;
			}
		}
			
	}
	
	return 0;
}
 
bool is_prime(int n)
{
	int i = 2;
	for(i; i*i<=n; i++)
	{
		if(n%i==0)
			return false;
	}
	return true;
}