우아함 추구: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!