문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
해결 과정
1일차의 베르트랑 공준 문제와 비슷한 문제이다. 다른 점은, 입력이 2개를 받고 n -> 2n이 M -> N으로 변경되었고, 소수의 갯수를 출력에서 소수를 직접 출력으로 변경되었다.
베르트랑 공준 문제의 정답 코드를 가져와서 이 문제에 맞게 수정하였다.
import java.util.Scanner; import static java.lang.Math.sqrt; public class Main { public static void main(String[] args) { int check = 0; Scanner a = new Scanner(System.in); int M = a.nextInt(); int N = a.nextInt(); for (int i=M;i<=N;i++){ if (i == 1) continue; check = 0; for (int j = 2;j<=sqrt(i);j++){ if (i%j==0){ check = 1; break;} } if (check == 0){ System.out.println(i); } }}} |
다만 베르트랑 공준의 경우, n초과 2n 이하이기에 값이 1일 때를 신경쓰지 않아도 되었지만, 이 문제는 M이상 N이하 이기에 M이 1일 경우에도 소수인지 아닌지 확인하게 되었다. 따라서 1의 경우에는 소수인지 검사하지 않고 다음 숫자로 넘어가도록 조건을 추가해 주었다.
이전에 이미 한 번 해 보았던 문제이다 보니 큰 문제 없이 정답을 제출할 수 있었다.
'스파르타 알고리즘 트랙 문제(백준) > 2일차' 카테고리의 다른 글
스파르타 알고리즘 트랙 문제 2일차 - 4 #1011 Fly me to the Alpha Centauri (0) | 2023.07.27 |
---|---|
스파르타 알고리즘 트랙 문제 2일차 - 3 #1110 더하기 사이클 (0) | 2023.07.26 |
스파르타 알고리즘 트랙 문제 2일차 - 1 #10250 ACM 호텔 (0) | 2023.07.26 |