Paying with strange coins#
Imagine a country whose coins are worth 1, 2, 3, 5, 8, 13, 21, 34, 55 and so on. Each coin is the sum of the two before it. You want to pay any amount, using each coin at most once, and never two coins that sit next to each other in that list.
Can you always do it? Yes, and in exactly one way. That is Zeckendorf’s theorem. This page shows the method, then the proof your professor gave.
The Fibonacci sequence#
Start with F0 = 0 and F1 = 1. After that, each term is the sum of the previous two: Fn = Fn−1 + Fn−2. A rule like that, which builds each term from earlier ones, is called a recurrence.
| n | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| Fn | 0 | 1 | 1 | 2 | 3 | 5 | 8 |
| n | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|
| Fn | 13 | 21 | 34 | 55 | 89 | 144 |
Two checkpoints from the lecture catch most slips: F5 = 5 and F10 = 55. If your table disagrees at either spot, you started the indexing wrong.
One property worth knowing: if m divides n, then Fm divides Fn. For example 5 divides 10, and F5 = 5 divides F10 = 55. Likewise 3 divides 9, and F3 = 2 divides F9 = 34.
The theorem, stated carefully#
Zeckendorf’s theorem. Every whole number n ≥ 1 can be written as
n = Fk₁ + Fk₂ + … + Fkₗ
where the indices k₁ > k₂ > … > kₗ satisfy two rules:
- No two are consecutive. Each index is at least 2 below the one before it.
- The smallest index is at least 2. F1 is not allowed.
Why ban F1? Because F1 = F2 = 1. With F1 allowed, 3 could be written as F4 and also as F3 + F1 = 2 + 1, and the representation would not be unique.
The method: always take the biggest coin that fits#
To write n, find the largest Fibonacci number that is ≤ n. Subtract it. Repeat on what is left.
Example: 50. The largest Fibonacci number ≤ 50 is 34 = F9, leaving 16. The largest ≤ 16 is 13 = F7, leaving 3 = F4. So
50 = F9 + F7 + F4 = 34 + 13 + 3. The indices 9, 7, 4 never touch.
The small cases from the lecture, which also serve as the base cases of the proof:
| n | Zeckendorf representation |
|---|---|
| 1 | F2 = 1 |
| 2 | F3 = 2 |
| 3 | F4 = 3 |
| 4 | F4 + F2 = 3 + 1 |
| 5 | F5 = 5 |
| 6 | F5 + F2 = 5 + 1 |
| 7 | F5 + F3 = 5 + 2 |
| 8 | F6 = 8 |
| 9 | F6 + F2 = 8 + 1 |
| 10 | F6 + F3 = 8 + 2 |
| 11 | F6 + F4 = 8 + 3 |
Why this needs strong induction#
In ordinary induction you prove the case n + 1 using only the case n. Here that is not enough.
To handle 50 you subtract 34 and need a representation of 16, not of 49. The number you need is the leftover after the biggest subtraction, and it can be far below n. You do not know in advance which one it will be.
Strong induction fixes this. Its hypothesis assumes the statement for every case from the start up to n, not only for n itself. Then whatever leftover you land on, you are allowed to use it. Strong induction is logically equivalent to ordinary induction; it simply hands you more to work with.
The proof, step by step#
Basis step. The table above checks n = 1 through 11 directly.
Induction hypothesis. Let n ≥ 11 and assume every m with 1 ≤ m ≤ n has a representation of the required kind.
Goal. Show that n + 1 has one.
Let Fk₁ be the largest Fibonacci number with Fk₁ ≤ n + 1.
Case 1: Fk₁ = n + 1. Then n + 1 is itself a Fibonacci number, a one-term representation. Done.
Case 2: Fk₁ < n + 1. Let m = n + 1 − Fk₁. Then m ≥ 1, and m ≤ n because Fk₁ ≥ 1. So the induction hypothesis applies to m:
m = Fk₂ + … + Fkₗ, with non-consecutive indices.
Add Fk₁ back: n + 1 = Fk₁ + Fk₂ + … + Fkₗ.
The last thing to check is that k₂ is not next to k₁, that is, k₂ ≤ k₁ − 2. Suppose not, so k₂ ≥ k₁ − 1. Fibonacci numbers increase, so
n + 1 ≥ Fk₁ + Fk₂ ≥ Fk₁ + Fk₁−1 = Fk₁+1.
The last step is the Fibonacci rule itself. But then Fk₁+1 is a bigger Fibonacci number that still fits under n + 1, which contradicts choosing Fk₁ as the largest. So k₂ ≤ k₁ − 2.
Conclusion. By the principle of strong mathematical induction, every n ≥ 1 has a Zeckendorf representation. The lecture left uniqueness for another video; the same “largest term” idea is the heart of that proof too.
Take the biggest Fibonacci number that fits, and if the next one were its neighbour the two would add up to a bigger Fibonacci number that also fits, which is impossible.
Where this goes wrong#
- Starting small instead of big. 1 + 2 + 3 = 6 uses consecutive terms. The greedy method must take the largest term first.
- Using consecutive terms that happen to sum correctly. 34 + 8 + 5 + 3 = 50, but 8 and 5 are neighbours. Merge them into 13.
- Using F1. It duplicates F2 and breaks uniqueness.
- Writing the hypothesis as ordinary induction. “Assume it holds for n” does not cover the leftover m. Write “for every m with 1 ≤ m ≤ n”.
- Forgetting the non-consecutive check. Existence of some Fibonacci sum is easy. The contradiction argument is what earns the marks.
Test yourself in the free Kestrel Exams app
Topic-selectable Discrete Math practice — offline, no ads, no account.
Practice Fibonacci and Zeckendorf →Frequently asked questions#
What is Zeckendorf's theorem?
Every positive integer can be written in exactly one way as a sum of Fibonacci numbers F_k with k ≥ 2 and no two consecutive indices. For example 50 = F9 + F7 + F4 = 34 + 13 + 3.
How do you find the Zeckendorf representation of a number?
Greedily: subtract the largest Fibonacci number that is not bigger than the number, then repeat on the remainder. For 100 that gives 89, then 8, then 3, so 100 = 89 + 8 + 3.
Why is Zeckendorf's theorem proved with strong induction?
After subtracting the largest Fibonacci number from n + 1, the leftover can be much smaller than n, and you cannot predict which value it will be. Strong induction assumes the statement for every smaller number, so whatever leftover appears is covered.
Why can't the Fibonacci indices be consecutive?
Two consecutive Fibonacci numbers add up to the next one: F_k + F_(k−1) = F_(k+1). If the representation used both, the next Fibonacci number would also have fit, contradicting that the largest one was chosen first.
What are F5 and F10?
With F0 = 0 and F1 = 1, F5 = 5 and F10 = 55. These two values are useful checkpoints for making sure a Fibonacci table is indexed correctly.
Something here not clear? A topic you wish we covered? Tell us. We read every message, and a request is the fastest way to get a guide written — several of these exist because somebody asked.