[BOJ 1313] 합성소수
View as PDF$1313$은 $ 13 \times 101$로 소인수분해되므로 합성수이지만, $1313$의 연속되는 진부분수 $13$, $31$, $13$, $131$, $313$은 모두 소수이다.</p>
이 문제에서, 연속되는 진부분수란 세 자리 이상의 양의 정수 $N$에 대하여 $N$의 십진수 표현에서 연속된 2개 이상의 숫자를 선택해 순서를 유지해서 만들 수 있는 수 중 $N$을 제외한 음이 아닌 정수라고 정의한다.
$1313$과 같이, 양의 정수 $N$이 다음 세 가지 조건을 모두 만족하면 합성소수라고 정의하자.
- $N$은 세 자리 이상
- $N$은 합성수
- $N$의 연속되는 진부분수가 모두 소수
단, 어떤 수의 연속되는 진부분수는 $0$으로 시작하는 수 및 $0$도 포함한다. 예를 들어 $20023$의 연속되는 진부분수는 $20$, $00(=0)$, $02(=2)$, $23$, $200$, $002(=2)$, $023(=23)$, $2002$, $0023(=23)$이 있다. $20$이 소수가 아니므로 $20023$은 합성소수가 아니다.
양의 정수 $ N $이 주어졌을 때 $ N $ 이하인 합성소수 중 가장 큰 수를 구해 보자.
입력 형식
첫 번째 줄에 테스트케이스의 수 $ T ( 1 \le T \le 10^5 )$ 가 주어진다.</p>
두 번째 줄부터 $ T $개의 줄에 각각 하나의 정수 $ N ( 1 \le N \le 10^7 ) $이 주어진다.
출력 형식
각 테스트케이스마다 $ N $ 이하인 합성소수 중 가장 큰 수를 출력한다. 만약 $ N $ 이하인 합성소수가 존재하지 않는다면 그 대신 $-1$을 출력한다.</p>
예제 출력과 같이 각 테스트케이스의 출력값은 입력 순서대로 한 줄에 하나씩 출력되어야 한다.
예제 입력
8
100
200
300
400
600
800
1000
1200
예제 출력
-1
171
297
371
597
737
979
1137
Comments