> 백엔드 개발 > C++ > C# 또는 Java에서 소수를 생성하는 가장 우아한 방법은 무엇입니까?

C# 또는 Java에서 소수를 생성하는 가장 우아한 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-13 10:43:43
원래의
433명이 탐색했습니다.

What's the Most Elegant Way to Generate Prime Numbers in C# or Java?

우아함 추구: C# 또는 Java의 소수 생성 모범 사례

소수 생성은 프로그래머들이 오랫동안 탐구해 온 주제였습니다. 속도와 코드 명확성 사이의 균형을 맞추는 방법은 알고리즘 설계의 핵심이 되었습니다. 이 문서에서는 C# 또는 Java에서 소수를 생성하는 우아한 방법을 살펴봅니다.

개량된 에라토스테네스의 체

에라토스테네스의 체는 소수를 찾는 일반적인 방법 중 하나입니다. 각 소수의 배수를 반복적으로 제거함으로써 소수가 아닌 모든 숫자를 필터링할 수 있습니다. 다음 코드는 표준 체 알고리즘을 개선한 것입니다.

<code class="language-c#">public static List<int> GeneratePrimes(int limit)
{
    if (limit < 2) return new List<int>();

    var primes = new bool[limit + 1];

    for (int i = 2; i * i <= limit; i++)
    {
        if (!primes[i])
        {
            for (int j = i * i; j <= limit; j += i)
            {
                primes[j] = true;
            }
        }
    }

    var result = new List<int>();
    for (int i = 2; i <= limit; i++)
    {
        if (!primes[i])
        {
            result.Add(i);
        }
    }
    return result;
}</code>
로그인 후 복사

LINQ 기반 소수 생성

또 다른 접근 방식은 LINQ의 지연 평가 기능을 활용하는 것입니다. 이 코드는 무한한 소수 시퀀스를 반환합니다.

<code class="language-c#">public static IEnumerable<int> GeneratePrimesLINQ()
{
    yield return 2;
    yield return 3;

    var primes = new HashSet<int> { 2, 3 };

    for (int i = 5; ; i += 2)
    {
        if (!primes.Any(p => i % p == 0))
        {
            primes.Add(i);
            yield return i;
        }
    }
}</code>
로그인 후 복사

방법선택

어떤 방법을 선택할지는 특정 적용 시나리오에 따라 다릅니다. 수정된 에라토스테네스의 체는 고정된 수의 소수를 찾는 데 효율적이며, LINQ 기반 방법은 증분 처리에 적합한 게으른 무한 시퀀스를 제공합니다. 궁극적으로 가장 우아한 솔루션은 특정 요구 사항을 명확하고 효율적으로 충족하는 솔루션입니다.

위 내용은 C# 또는 Java에서 소수를 생성하는 가장 우아한 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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