> 백엔드 개발 > C++ > 에라토스테네스의 체를 사용하여 Java에서 어떻게 우아하게 소수를 생성할 수 있습니까?

에라토스테네스의 체를 사용하여 Java에서 어떻게 우아하게 소수를 생성할 수 있습니까?

Linda Hamilton
풀어 주다: 2025-01-13 06:42:42
원래의
663명이 탐색했습니다.

How Can I Elegantly Generate Prime Numbers in Java Using the Sieve of Eratosthenes?

Java의 에라토스테네스의 체: 우아하게 소수 생성

소개

소수 생성은 다양한 알고리즘 중에서 선택할 수 있는 컴퓨터 과학의 근본적인 문제입니다. 그 중 에라토스테네스의 체는 단순성과 효율성으로 유명합니다. 이 기사에서는 에라토스테네스의 체를 사용하여 처음 n개의 소수를 생성하는 우아한 Java 구현을 제공합니다.

에라토스테네스의 체

에라토스테네스의 체는 소수의 배수를 반복적으로 제거하여 소수를 식별하는 확률적 알고리즘입니다. 먼저 부울 플래그 배열을 초기화합니다. 각 플래그는 지정된 제한까지의 숫자를 나타냅니다. 그런 다음 알고리즘은 첫 번째 소수 2부터 시작하여 배열을 반복하고 모든 배수를 소수가 아닌 것으로 표시합니다. 이 과정은 한계 내의 모든 숫자가 제거되고 소수만 남을 때까지 계속됩니다.

우아한 구현

에라토스테네스의 체의 우아한 Java 구현은 다음과 같습니다.

<code class="language-java">public static BitSet computePrimes(int limit) {
    final BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 2; i * i <= limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j <= limit; j += i) {
                primes.set(j, false);
            }
        }
    }
    return primes;
}</code>
로그인 후 복사

설명

이 구현은 각 비트가 지정된 제한까지의 숫자를 나타내는 BitSet을 생성합니다. 처음에는 0과 1이 소수가 아닌 것으로 표시되고 다른 모든 숫자는 소수로 표시됩니다.

외부 루프는 첫 번째 소수 2부터 시작하여 배열을 반복합니다. 현재 위치의 비트가 설정되면(소수임을 나타냄) 내부 루프는 해당 소수의 모든 배수를 소수가 아닌 것으로 표시합니다. 이 프로세스는 한도 내의 모든 숫자가 제거될 때까지 계속됩니다.

마지막으로 소수가 포함된 BitSet을 반환합니다.

결론

에라토스테네스의 체에 대한 이 Java 구현은 알고리즘의 우아함과 단순성을 보여줍니다. 소수를 효율적으로 생성하고 명확하고 논리적인 구조를 가지고 있습니다. 이 코드는 성능과 이해 가능성에 최적화되어 소수 생성기가 필요한 프로그래머에게 유용한 도구입니다.

위 내용은 에라토스테네스의 체를 사용하여 Java에서 어떻게 우아하게 소수를 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿