ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL 실력키우기 1901 : 소수 구하기
    보관함 2017. 10. 1. 14:42

     


    소수(prime number)란 2이상의 수로써 1과 자기 자신 외에는 약수를 갖지 않는 수를 의미한다

    임의의 M값에 대하여 M에 가장 가까운 소수를 구하는 프로그램을 아래 조건에 따라 작성한다.



    첫 번째 줄에는 처리해야 할 수의 개수 N을 입력 받는다. (N은 100이하의 정수) 다음 줄에는 처리해야할 수 N개(M1부터 Mn까지)를 한 줄에 한 개씩 차례로 입력 받는다. (Mi 는 1,000,000 이하의 양의 정수) 데이터의 크기가 주어진 범위를 벗어나는 입력은 없다.



    임의의 값 Mi에 대해 차이가 가장 작은 소수를 구하여 출력한다. 만약 차이가 같은 소수가 여러 개이면 작은수부터 모두 출력한다. 출력되는 값은 1이상 1,000,000이하의 소수이어야 한다.


     [Copy]

    2 
    8 
    15
    [Copy]
    7 
    13 17

     


     

    이것도 마찬가지로 에라토스테네스의 체를 이용하여 소수를 구하여 그것을 활용하는 문제인데요,

    저는 입력받은 수들 중 가장 큰 수보다 큰 소수까지를 구한 뒤,

    그 소수들을 검사하여 현재 입력받은 수 보다 커지는 순간에 나타나는 소수 두개(더 큰 소수와 바로 직전의 소수)를 비교하여

    더 작은 차이를 보이는 것을 출력하였고  이 차이값이 같은경우에는 순서대로 출력하도록 했습니다.

     

    생각보다 오래걸렸네요. 아무래도 기초 로직을 몇 번 엎고 다시생각하니 오래걸린 것 같습니다.

     

     

     

    JUNGOL) 문제은행) 실력키우기) 소수 구하기

    댓글

Designed by Tistory.