https://www.acmicpc.net/problem/9020
Idea
우선 앞에 했던 것처럼 NL JOIN
을 이용해서 소수를 구한다.
구한 다음 입력값 n / 2 부터 1씩 감소하는 반복문의 조건을
arr[j] == 0 && arr[n - j] == 0
즉, 감소한 값, 입력 값 - j 둘 다 모두 소수가 되면 반복문을 종료하고 출력한다.
Code
#define _CRT_SECURE_NO_WARNINGS
#define NUM 10001
#include <stdio.h>
int main(void) {
int arr[NUM] = { 0, };
int t, n;
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
for (int j = 2; i * j <= n; j++) {
arr[i * j] = 1;
}
}
for (int j = (n / 2); j > 0; j--) {
if (arr[j] == 0 && arr[n - j] == 0) {
printf("%d %d\n", j, n - j);
break;
}
}
}
return 0;
}
gg