Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 피보나치 수열 출력하기 – BigInteger로 큰 수도 문제없이

피보나치 수열은 첫 번째 항과 두 번째 항이 각각 0과 1이며, 세 번째 항부터는 바로 앞의 두 항을 더한 값이 되는 수열입니다. 즉, 0, 1, 1, 2, 3, 5, 8, 13, 21… 형태로 이어집니다.

이 글에서는 C#을 사용하여 피보나치 수열을 화면에 출력하는 방법을 단계별로 살펴보겠습니다.

기본 아이디어

피보나치 수열의 첫 두 숫자는 항상 0과 1로 고정되어 있으므로, 먼저 이 두 값을 초기화합니다.

int val1 = 0, val2 = 1;

변수 n은 출력할 피보나치 수의 개수를 의미합니다. 처음 100개의 피보나치 수를 얻고 싶다면 n을 100으로 설정하면 됩니다.

C# 전체 코드 예제

using System;

public class Demo {
   public static void Main(string[] args) {
      int val1 = 0, val2 = 1, val3, i, n;
      n = 40;

      Console.WriteLine("피보나치 수열 출력:");
      Console.Write(val1 + " " + val2 + " ");

      for(i = 2; i < n; ++i) {
         val3 = val1 + val2;
         Console.Write(val3 + " ");
         val1 = val2;
         val2 = val3;
      }
   }
}

코드 설명

val1, val2 : 수열의 첫 두 항인 0과 1로 초기화됩니다.
n : 출력할 항의 개수입니다. 위 예제에서는 40으로 설정했습니다.
for 루프 : 세 번째 항부터 n번째 항까지 반복하면서 새로운 값을 계산합니다.
val3 : 앞의 두 항(val1 + val2)을 더한 값으로, 다음 피보나치 수가 됩니다.

실행 결과

피보나치 수열 출력:
0 1 1 2 3 5 8 13 21 34 55 89 144 ...

정말 큰 피보나치 수를 다루려면?

C#의 int 타입은 최대 2,147,483,647까지만 표현할 수 있습니다. 그런데 피보나치 수는 놀랍도록 빠르게 커지기 때문에 47번째 항부터 int 범위를 초과하게 됩니다. 따라서 더 큰 피보나치 수를 정확하게 계산하려면 long 타입을 사용하거나, 크기 제한이 없는 System.Numerics.BigInteger를 사용하는 것이 좋습니다.

다음은 BigInteger를 사용하여 처음 100개의 피보나치 수를 출력하는 예제입니다.

using System;
using System.Numerics;

public class Demo {
   public static void Main(string[] args) {
      BigInteger val1 = 0, val2 = 1, val3;
      int n = 100;

      Console.WriteLine("처음 100개의 피보나치 수:");
      Console.Write(val1 + " " + val2 + " ");

      for(int i = 2; i < n; ++i) {
         val3 = val1 + val2;
         Console.Write(val3 + " ");
         val1 = val2;
         val2 = val3;
      }
   }
}

BigInteger는 .NET Framework 4.0 이상에서 System.Numerics 네임스페이스를 통해 제공되며, 메모리가 허용하는 한 어떤 크기의 정수든 다룰 수 있습니다. 이를 활용하면 100번째, 1000번째 피보나치 수처럼 매우 큰 값도 오버플로우 걱정 없이 정확하게 계산할 수 있습니다.