Search
Duplicate
✈️

에라토스테네스의 체

가장 대표적인 소수 판별 알고리즘이다.
소수란 양의 약수를 두 개만 가지는 자연수를 의미한다.
이러한 소수를 대량으로 빠르고 정확하게 구하는 방법이다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ_1929 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int m = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextToken()); boolean[] array = eratosthenes(n); for (int i = m; i < n + 1; i++) { if (array[i]) { System.out.println(i); } } } public static boolean isPrimeNumber(int n) { if (n == 1) { return false; } for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } public static boolean[] eratosthenes(int end) { boolean[] array = new boolean[end + 1]; for (int i = 2; i < end + 1; i++) { array[i] = true; } for (int i = 2; i < end + 1; i++) { if (array[i] && isPrimeNumber(i)) { // 걸러주는 로직 for (int j = i + i; j <= end; j += i) { array[j] = false; } } } return array; } }
Java
복사