문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
풀이 방법
에라토스테네스의 체를 활용하여 1~N까지의 소수를 구한다. 이 과정에서 M보다 크거나 같은 소수는 출력한다.
제출 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N =sc.nextInt();
int[] primes = new int[N+1];
primes[0] = 1;
primes[1] = 1;
StringBuilder sb = new StringBuilder();
for (int i = 2; i < N+1; i++) {
if(primes[i] == 0){
if(i >= M){
sb.append(i).append("\n");
}
for (int j = 2; j*i < N+1; j++) {
primes[i*j] = 1;
}
}
}
System.out.println(sb);
}
}
'Study > Algorithms' 카테고리의 다른 글
백준 4153 직각삼각형 (JAVA) (0) | 2023.08.27 |
---|---|
백준 2798 블랙잭 (Java) Next Permutation 활용 풀이 (0) | 2023.08.27 |
백준 2751 수 정렬하기 2 (JAVA) (0) | 2023.08.26 |
백준 2609 최대공약수와 최소공배수 (0) | 2023.08.26 |
백준 1978 소수찾기(JAVA) (0) | 2023.08.26 |