본문 바로가기
공부/백준

[백준] 1929번

by _음주토끼_ 2022. 6. 15.
 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

 

소수 구하는 알고리즘 구현은 경험이 있기 때문에 코드를 금세 짰다.

두 수가 주어지는데, 그 두 수를 포함한 숫자 사이의 소수를 모두 출력하는 것이다.

for문을 돌려서 소수로 판정나면 그 수를 print해주는 방식을 이용했다.

 

문제는 시간초과가 일어난다는 점이었다.

머리를 싸매다가 다른 사람들의 제출 코드도 참고하고, 인터넷에서 검색해서 찾아봤다.

이중 반복문 내에서 1과 자신을 제외한 값으로 나누어떨어지지 않는다면 소수로 판정하는데,

숫자가 크면 그 범위가 너무 넓었다. 이것때문에 인터넷을 찾아봤더니 제곱근까지 검사해도 소수가 판정된다기에

범위를 제곱근까지로 변경해서 반복문의 범위를 확 줄였다.

그리고 하나라도 나누어떨어지는 값이 있으면 바로 break해서 반복문을 빠져나오는 형식으로 변경했다.

 

'공부 > 백준' 카테고리의 다른 글

[백준] 5566번  (0) 2022.06.15
[백준] 2753번  (0) 2022.06.15
[백준] 2108번  (0) 2022.06.15
[백준] 1010번  (0) 2022.06.15
[백준] 11659번  (0) 2022.06.15