아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

소수 없는 수열

시간 제한1초메모리 제한128 MB

요약
n부터 m까지의 수를 배열해 길이 2부터 d까지 연속한 수의 합이 모두 소수가 아니게 하는 사전순 최소 순열을 구하거나, 없으면 없다고 출력한다.
난이도

보통10점 중 7점

유형
백트래킹, DFS, 정수론, 그리디
정답자
아직 제출이 없습니다

문제

nn부터 mm까지의 연속한 정수로 이루어진 수열 n,n+1,n+2,…,mn, n+1, n+2, \dots, m이 있다. 이 수들의 순서를 적절히 바꾸어 인접한 두 수의 합이 모두 소수가 아니게 만들 수 있으며, 이렇게 만든 수열을 소수 없는 수열이라고 한다.

예를 들어 n=1n = 1, m=10m = 10일 때 1, 3, 5, 4, 2, 6, 9, 7, 8, 10은 소수 없는 수열 중 하나이며, 그러한 수열 가운데 사전순으로 가장 앞선다.

이를 확장하여, dd차 소수 없는 수열이란 연속한 2,3,…,d2, 3, \dots, d개의 수의 합이 모두 소수가 아닌 수열을 말한다. 위 예의 수열은 인접한 두 수의 합이 모두 소수가 아니므로 22차 소수 없는 수열이다. 하지만 연속한 세 수 5, 4, 2의 합이 11로 소수이므로 33차 소수 없는 수열은 아니다. n=1n = 1, m=10m = 10에서 33차 소수 없는 수열 중 사전순으로 가장 앞선 것은 1, 3, 5, 4, 6, 2, 10, 8, 7, 9이다.

nn, mm, dd가 주어질 때, 사전순으로 가장 앞선 dd차 소수 없는 수열을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 세 정수 nn, mm, dd가 공백으로 구분되어 주어지며, 1≤n<m≤10001 \le n < m \le 1000, 2≤d≤102 \le d \le 10을 만족한다.

입력의 마지막 줄에는 0 0 00\ 0\ 0이 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 dd차 소수 없는 수열을 쉼표(,)로 구분하여 한 줄에 출력한다. 조건을 만족하는 수열이 여러 개이면 사전순으로 가장 앞선 것(첫 번째 수가 가장 작고, 같으면 두 번째 수가 가장 작은 식)을 출력한다.

dd차 소수 없는 수열이 존재하지 않으면 No anti-prime sequence exists.를 출력한다.

예제1

  1. 예제 1

    입력
    1 10 2
    1 10 3
    1 10 5
    40 60 7
    0 0 0
    
    예상 출력
    1,3,5,4,2,6,9,7,8,10
    1,3,5,4,6,2,10,8,7,9
    No anti-prime sequence exists.
    40,41,43,42,44,46,45,47,48,50,55,53,52,60,56,49,51,59,58,57,54