[java] 자바를 활용한 에라토스테네스의 체 알고리즘

에라토스테네스의 체( 에라토스테네스의 체 알고리즘)는 특정 범위 내의 모든 소수를 찾는 효율적인 알고리즘입니다. 이 알고리즘을 사용하여 주어진 범위 내의 모든 소수를 찾고 출력하는 간단한 자바 프로그램을 작성해 보겠습니다.

에라토스테네스의 체 알고리즘 구현

import java.util.ArrayList;
import java.util.List;

public class SieveOfEratosthenes {
    public static List<Integer> findPrimes(int n) {
        boolean[] isPrime = new boolean[n + 1];
        for (int i = 2; i <= n; i++) {
            isPrime[i] = true;
        }
        for (int i = 2; i * i <= n; i++) {
            if (isPrime[i]) {
                for (int j = i * i; j <= n; j += i) {
                    isPrime[j] = false;
                }
            }
        }
        List<Integer> primes = new ArrayList<>();
        for (int i = 2; i <= n; i++) {
            if (isPrime[i]) {
                primes.add(i);
            }
        }
        return primes;
    }

    public static void main(String[] args) {
        int n = 30;
        List<Integer> primes = findPrimes(n);
        System.out.println("소수: " + primes);
    }
}

코드 설명

이제 위의 코드를 실행하면 30 이하의 모든 소수가 출력됩니다.

에라토스테네스의 체 알고리즘을 사용하면 비교적 큰 범위 내의 소수를 효율적으로 찾을 수 있습니다.

참고 자료