만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

소수 자르기

면접 대비

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

요약
각 N과 C에 대해 1부터 N까지의 소수 목록을 만들고, 목록 길이가 짝수면 가운데 C×2개를, 홀수면 C×2-1개를 출력하며, 그 수가 목록보다 많으면 전체를 출력한다.
난이도

쉬움10점 중 3점

유형
수학, 정수론, 배열, 구현
정답자
아직 제출이 없습니다

문제

소수는 11과 자기 자신으로만 나누어떨어지는 자연수입니다(1,2,3,…1, 2, 3, \ldots). 이 문제에서는 11도 소수 목록에 포함합니다. 정수 NN이 주어지면 11부터 NN까지(양 끝 포함)의 소수를 작은 것부터 순서대로 나열한 목록을 만듭니다. 그런 다음 이 목록의 가운데에서 소수 몇 개를 잘라 출력합니다. 목록에 있는 소수의 개수가 짝수이면 가운데에서 C×2C \times 2개의 소수를, 홀수이면 가운데에서 (C×2)−1(C \times 2) - 1개의 소수를 출력합니다.

입력

입력은 여러 줄로 이루어지며, 각 줄에는 두 정수가 공백으로 구분되어 주어집니다. 첫 번째 수 NN (1≤N≤10001 \le N \le 1000)은 소수 목록을 만들 범위의 최댓값입니다(즉 11부터 NN까지). 두 번째 수 CC (1≤C≤N1 \le C \le N)는 목록의 길이가 짝수일 때 가운데에서 출력할 소수의 개수 C×2C \times 2를, 홀수일 때 출력할 개수 (C×2)−1(C \times 2) - 1을 정합니다. 입력은 파일의 끝까지 계속됩니다.

출력

각 입력 줄마다, 먼저 NN을 첫 번째 열부터 출력하고 공백 하나, 그다음 CC, 그다음 콜론(:)을 출력합니다. 이어서 위에서 정한 가운데 소수들을 출력하되, 각 소수 앞에는 정확히 공백 하나를 붙입니다. 만약 가운데에서 잘라낼 소수의 개수가 11부터 NN까지의 소수 목록 크기를 넘으면, 그 목록 전체를 출력합니다. 서로 다른 입력 줄에 대한 출력 사이에는 빈 줄을 하나 넣어 구분합니다.

예제1

  1. 예제 1

    입력
    21 2
    18 2
    18 18
    100 7
    
    예상 출력
    21 2: 5 7 11
    
    18 2: 3 5 7 11
    
    18 18: 1 2 3 5 7 11 13 17
    
    100 7: 13 17 19 23 29 31 37 41 43 47 53 59 61 67