> Java > java지도 시간 > 어떻게 우아하게 소수를 생성할 수 있나요?

어떻게 우아하게 소수를 생성할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-04 05:33:01
원래의
678명이 탐색했습니다.

How Can We Generate Prime Numbers with Elegance?

우아한 소수 생성

소수 생성 함수를 간결하고 읽기 쉽게 구현해야 하는 필요성은 프로그래밍에서 자주 발생합니다. 이러한 함수 중 하나인 generatePrimes는 처음 n개의 소수 목록을 생성하는 것을 목표로 하며 어떤 접근 방식이 가장 우아함을 제공하는지에 대한 의문을 제기합니다.

기본 구현

한 가지 일반적인 방법은 다음과 같습니다. 처음 몇 개의 소수(2, 3)를 포함하는 목록으로 시작하여 소수를 확인하는 동안 다음 소수를 점진적으로 추가하는 반복적 접근 방식입니다. 이 구현은 기능적이지만 명시적인 루프 구조와 자세한 검사 가능성으로 인해 우아함이 부족할 수 있습니다.

시브(Sieve) 알고리즘 활용

보다 우아한 솔루션은 다음과 같은 체(sieve) 알고리즘을 사용하는 것입니다. 에라토스테네스의 체. 이 메서드는 지정된 제한까지 숫자의 잠재적 소수성을 나타내는 부울 배열을 초기화합니다. 2부터 시작하여 각 소수의 배수를 소수가 아닌 것으로 반복적으로 표시하여 효과적으로 목록에서 제거합니다.

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

이 접근 방식은 단순성과 효율성을 결합하여 우아한 구현을 제공합니다.

수학적 추정 활용

더욱 우아함을 위해 주어진 한계까지 소수의 수 추정을 사용할 수 있습니다. 소수 정리(Prime Number Theorem)에서 파생된 이 추정치는 해당 범위 내의 잠재적인 소수 수에 대한 상한을 제공합니다. 이 추정치를 활용하여 체 크기를 결정하면 솔루션의 우아함이 더욱 향상됩니다.

수학적 추정과 체 알고리즘의 조합은 우아함과 효율성을 모두 제공하므로 소수 생성을 위한 강력한 선택이 됩니다.

위 내용은 어떻게 우아하게 소수를 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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