본문 바로가기
프로그래밍/C#

C# yield return을 이용한 소수 생성기

by bantomak 2024. 2. 14.

yield return을 이용한 지연 계산

yield return에 대해서 공부하면서 대량의 데이터를 다루기 편해지고 지연 로딩이 강점이라는 설명글들을 많이 읽었지만 "그래서 이걸 대체 어디에 사용하지?"라는 의문에 계속해서 들고 있었다. 그러다가 피보나치 수열을 만드는 예제를 보고 yield return을 사용해서 소수를 만드는 메서드를 만들면 좋을거 같다는 생각이 들어서 코드를 한번 짜봤다.

 

5개의 소수가 정상적으로 출력된다.

 

사용자는 자기가 필요한만큼 소수를 꺼내쓰기만 하면 된다. 이에 대한 계산은 그때 그때 온-디멘드(OnDemand)로 이루어진다.

 

예제

public static IEnumerable<int> GeneratePrimeNumber()
{
    int start = 2;

    while (true)
    {
        for (int i = 2; i < start; i++)
        {
            if (start % i == 0)
            {
                start++;
                continue;
            }
        }

        yield return start;
        start++;
    }
}

static void Main(string[] args)
{
    foreach (var i in GeneratePrimeNumber().Take(5))
    {
        Console.WriteLine(i);
    }
}

 

함께 읽으면 좋은 글

 

C# yield 이해하기

C# yield 이해하기 yield는 iterator를 포함하는 메서드에서 사용되는 강력한 키워드이다. yield를 사용하면 enumerable 배열을 간단하게 반환할 수 있다. 하나의 요소를 해당 시점에서 반환하기 때문에 기

jettstream.tistory.com

 

참고 사이트

 

Yield in C#: Usage + Examples (2024)

Delving into the inner workings of C#? Ready to get a grip on the concept of Yield? Brace up! We're about to embark on a captivating journey that will

www.bytehide.com

댓글