baekjoon 9020

p3pwp3p·2022년 5월 18일
1

baekjoon

목록 보기
17/36

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

profile
💭(。•̀ᴗ-)✧

0개의 댓글