피보나치 수열 생성기 & N번째 항 계산기
앞에서 N개의 피보나치 수를 생성하거나 정확한 N번째 항을 BigInt 정밀도로 계산합니다 — 일반 부동소수점이 오차를 내기 시작하는 F(78) 이후에도 정확합니다.
시작값을 바꾸면 같은 규칙의 다른 수열이 됩니다 — 뤼카 수가 그 예입니다.
0, 1, 1, 2, 3, 5, 8, 13, 21, 340, 1, 1, 2, 3, 5, 8, 13, 21, 34
황금비
F(9) ÷ F(8) = 1.6190476190
φ = (1 + √5) / 2 = 1.6180339887…
어떤 항을 바로 앞 항으로 나누면, 수열의 뒤로 갈수록 그 값이 황금비 φ에 가까워집니다 — 각 항은 대략 앞 항에 φ를 곱한 값입니다.
피보나치 나선
정확한 BigInt 연산으로 아무리 큰 항도 오차 없이 계산합니다.
앞 N개 항 전부, 아니면 F(N) 하나
N 값을 입력하면 선택한 모드에 따라 피보나치 수열의 앞 N개 항을 보여 주거나 N번째 항 하나만 계산해 줍니다. 피보나치 수열은 0, 1, 1, 2, 3, 5, 8, 13, 21… 처럼 시작하며, 각 수는 바로 앞 두 수의 합입니다. 0부터 세는 방식을 사용하므로 F(0) = 0, F(1) = 1, F(10) = 55 입니다. 입력하는 즉시 결과가 갱신되고, 복사 버튼으로 결과를 한 번에 가져올 수 있습니다.
정확한 큰 수 연산이 중요한 이유
피보나치 수는 지수적으로 커집니다. F(100)만 해도 21자리에 이르기 때문에 일반적인 부동소수점 숫자는 F(78) 부근부터 정밀도를 잃고 반올림된 잘못된 자릿수를 내놓습니다. 이 생성기는 크기 제한이 없는 정수를 저장하는 자바스크립트 BigInt 연산을 사용하므로 모든 항을 모든 자릿수 그대로 보여 줍니다. 결과를 읽기 쉽고 빠르게 유지하기 위해 N은 1000까지로 제한되며, 이 경우에도 200자리가 넘는 항이 나옵니다. 기본 시작값으로 N번째 항을 구하면 나오는 “F(N)의 성질”은 그 항이 몇 자리인지와, d가 n의 약수이면 F(d)가 F(n)의 약수라는 규칙으로 N의 약수에서 얻는 F(N)의 약수를 보여 주어, 합성수 N 대부분에서 F(N)이 소수가 아님을 드러냅니다.
이 수열이 나온 이야기
이 수들은 피보나치라고 불린 피사의 레오나르도의 이름을 땄습니다. 그는 1202년에 펴낸 산술책 산반서(Liber Abaci)에 토끼 문제로 이 수들을 실었습니다. 사방이 담으로 막힌 곳에 갓 태어난 토끼 한 쌍을 넣습니다. 토끼 한 쌍은 한 달이면 다 자라고, 그 뒤로는 달마다 새끼 한 쌍을 낳으며, 죽는 토끼는 없습니다. 한 해가 지나면 몇 쌍이 될까요? 달마다 세어 보면 이번 달의 쌍 수는 지난달의 쌍 수(살아 있는 쌍은 그대로 있으니까)에 지지난달의 쌍 수(새끼를 낳을 만큼 자란 쌍이 바로 그만큼이니까)를 더한 값입니다. 1, 1, 2, 3, 5, 8 … 처럼 앞의 두 수를 더해 다음 수가 됩니다. 답이 이렇게 깔끔한 것은 가정 덕분입니다. 토끼는 죽지 않고, 새끼는 늘 암수 한 쌍이며, 달마다 빠짐없이 새끼를 낳고, 풀은 떨어지지 않습니다. 생물학이 아니라 이상화한 퍼즐입니다 — 실제 토끼는 죽고, 한 번에 여러 마리를 낳으며, 먹이가 모자라게 됩니다. 이 수열이 자리를 잡은 곳은 동물학이 아니라 수학입니다. 인도의 학자들은 그보다 몇 세기 앞서 산스크리트 시의 운율을 세다가 같은 수를 만났습니다.
자주 묻는 질문
수열은 0부터 시작하나요, 1부터 시작하나요?
이 도구는 0부터 세는 표준 방식을 사용합니다. F(0) = 0, F(1) = 1, F(2) = 1 순서이므로 앞 N개 항은 항상 0으로 시작하고, N번째 항도 0번 인덱스부터 셉니다.
아주 큰 피보나치 수도 반올림 없이 볼 수 있나요?
네. 이 생성기는 BigInt 정수 연산을 사용하므로 자릿수가 아무리 많아도 마지막 자리까지 정확합니다. 큰 항을 지수 표기로 바꿔 반올림하는 계산기와 다릅니다.
다른 수에서 시작하거나, 어떤 값이 수열 몇 번째인지 찾을 수 있나요?
네. 처음 두 항을 바꿀 수 있고, “어떤 값까지” 모드는 그 수까지의 항을 나열하며 몇 번째 항인지 알려 줍니다.
N에 음수를 넣을 수 있나요? 황금비는 어디에 나오나요?
N번째 항 모드에서는 됩니다. 규칙을 거꾸로 적용해 각 항을 두 칸 뒤의 항에서 바로 뒤의 항을 뺀 값으로 구하고, 풀이 과정에 그 뺄셈을 차례로 적습니다. 앞에서 N개 항 모드는 여전히 0 이상의 개수가 필요합니다. 답 옆의 “황금비”는 화면의 마지막 두 항을 나눈 값을 φ = (1 + √5) / 2와 나란히 보여 주고, “피보나치 나선”은 항을 한 변으로 하는 정사각형을 차례로 붙이고 각각에 사분원을 그립니다 — 타일처럼 맞물리는 것은 기본 시작값뿐이라 그때만 그립니다.
F(N)의 값 말고 다른 것도 알려 주나요?
네. 기본 시작값의 N번째 항 모드에서 “F(N)의 성질”이 그 항의 자릿수를 알려 주고, d가 n의 약수이면 F(d)가 F(n)의 약수라는 규칙을 씁니다. 1과 2, N 자신을 뺀 N의 약수마다 F(N)의 약수를 하나씩 얻어 값과 함께 적으므로, F(N)이 소수가 아님을 보여 줍니다. N에 그런 약수가 없으면 — N이 소수이거나 4일 때 — 이 규칙으로는 약수를 찾지 못한다고, 소수일 수도 아닐 수도 있다고 알려 줍니다.