An Elementary Proof of the Fundamental Theorem of Algebra
Using only elementary methods we will prove the Fundamental Theorem of Algebra. Along the way, we’ll befriend some key ideas from elementary analysis and catch a glimpse into the beautiful world of complex numbers.

Motivation
Regardless of anything else, it’s been a great quarantine project for me:)
The aim of theory really is, to a great extent, that of systematically organizing past experience in such a way that the next generation, our students and their students and so on, will be able to absorb the essential aspects in as painless a way as possible, and this is the only way in which you can go on cumulatively building up any kind of scientific activity without eventually coming to a dead end.
Michael Atiyah, Fields Medalist, in ‘How research is carried out’
The language of elementary analysis is that of continuity, limits, open and closed sets, and of calculus in one variable. It is with hindsight we can see that these concepts and definitions reduce impossible problems into very doable. (Or, as I found, *doable* with intermittent attempts over several months and making many mistakes mistakes.)
In trying to prove this theorem, I used this language of elementary analysis. To begin with, you’ll get acquainted with what some of these (initially daunting) concepts mean. Then, we’ll use them to prove something which would otherwise seem impossible.
I’ve tried to include the bare minimum apparatus of what is needed. If you’re familiar with some of it, feel free to skip sections you’re familiar with. You can also get a feel for the proof and return to the pre-requisites as needed. Inevitably, if this is your first time meeting a lot of this material, don’t expect it all to make perfect sense; aim for understanding the gist of the argument, not every detail.
Statement of the Problem
Suppose we have a polynomial over the complex numbers, and we want to know if there is a complex number where the polynomial evaluates to 0. (An introduction to complex numbers can be found next, if needed)
![]()
The Fundamental Theorem of Algebra states that every such polynomial over the complex numbers has at least one root. This is in stark contrast to the real numbers, where many polynomials have no roots, such as x² + 1. Over the complex numbers, z² + 1 has two roots: +i and -i. i²=-1 so both evaluate to -1+1 = 0.
In contrast, polynomials over the real numbers are not guaranteed to have at least one root. For example, the polynomial below doesn’t have any roots, as can be seen from its graph.

0. Gameplan
It is quite tricky to give the broad brushstrokes of what will be a somewhat technical proof. Please do not skip this section, as it is important to have an overarching view of what we are going to do!
So, what I do here, is prove it for a very simple function. I prove it for P(z) = 2z, and I prove that P(z) = 2z has a root. Well, obviously it does, you say, just plug in P(0+0i) = 2(0+0i) = 0. Done.
But I’m going to pretend that I haven’t spotted this, and use a method which will generalise very nicely to more polynomials.
First, we take a point w. We can see where P sends w: P(w) = 2w. But what about in a small region around w? Draw a small circle around w in the complex plane, and see where all the points in it land. It turns out if we shaded in all the points where they landed it would form another circle.[Spoiler: when representing complex numbers, we do so in a 2D plane. That’s because z = x+iy can be represented as the coordinates (x,y) on a diagram]

Now, suppose that for every complex number w except a finite number, say, 4 points, we could draw a shaded circle around w, then see where that lands, and finally we could inscribe a circle inside the ‘image’ of where that circle lands. A diagram shows the process of inscribing a circle inside the ‘image’ of where our old circle landed.

Our function P(z) = 2z was nice in that it exactly mapped the circle into a different circle. But we might have a more horrible polynomial, perhaps z⁷-3z² +1. A natural question then to ask is, if we see where a circle maps to, can we inscribe a circle? It doesn’t matter if the circle is really, really small. In the diagram above, the circle maps to some weird shape, but that doesn’t matter, because we can draw that small green circle with the red perimeter, which fits snugly inside the slightly odd shape.
Why is this helpful? Well, it turns out we can inscribe a small circle around P(w) provided the derivative is not 0 at w. We will also find out that the derivative can only be 0 at a finite number of points.
Previously, we looked at where a circle mapped to, but now we look at where the entire plane maps to. In particular, if we don’t have a point which maps to the origin, then for every line through the origin in the greenish blob below, we can consider the point on the line which is closest to the origin.
Let me take some time to explain the diagram below. Take a look at it first. The grey blob represents the complex plane. It goes on indefinitely in all directions. We then place a dot of green at every place a grey dot lands under the map P. The map P is kinda like a projectile firing points from one plane to another. We don’t know much about this green shape— in fact, even the diagram itself tacitly assumes some things, hence the need for formal proofs as well as pretty pictures! — but if there is no point which is sent to 0, then the origin is not shaded. It turns out there must be a region around 0+0i which nothing is sent to.
We then draw a purple line from the origin in the lower part of the diagram. We identify the closest point on that line to the origin, and we find which point was sent to it.

Here’s the trick. Suppose the point with the cross in the grey diagram is called w, and the one in the green diagram is P(w). Now suppose the gradient at w is non zero. We can then draw a small circle around w, and watch where it lands

In particular, the small grey area could contain a small circle, as per our previous discussion. But this is clearly a contradiction — the grey area, along with any other circle centred at P(w), clearly (visually) contains points on the purple line which are closer to the origin. But recall that, of all possible complex numbers z which were mapped such that they landed on the purple line, w was the one which landed closest. It is therefore a contradiction to find these points on the purple line closer to the origin which are in the image of the map P.
We can apply this to every single line through the origin, of which there are infinite. This argument only doesn’t apply when the derivative is 0, which occurs at most for a finite number of points. That still leaves an infinite number of lines where we can apply our argument, and we can still find our contradiction.
But now we hold our horses. This argument was pretty, and the diagrams were nice (well, sorta; I patched them together on microsoft word!). They give good intuition for the approach, but it is not yet a proof. For that, we need definitions which capture these geometric intuitions, and allow us to apply them rigorously to any polynomial.
1. Complex number basics
There’s several ways to approach what a complex number is. The ‘rigorous’ definition is probably only helpful to people who already know what a complex number is. So below is some visual understanding and intuition. If you already are comfortable with complex numbers, skip this section.
Visually a complex number z can be written as its ‘real’ and imaginary parts. The real part is written on the x axis of a graph, and the imaginary part is written on the y-axis. So z = x + iy.
Addition happens as you would expect: you add the ‘real parts’ and you add the ‘imaginary parts’.
Multiplication can be visualised slightly differently: it corresponds to a rotation and a change in radius. Here, the square root of negative 1 makes perfect sense, as we have extended the definition of multiplication! The point i has angle 90 degrees, and length 1. So, when we multiply a point z by i, we rotate it by 90 degrees, and scale the radius by 1. Of course, scaling a radius by 1 leaves it the same. If we were to multiply z by 2i, then it would be rotated by 90 degrees, and stretched outwards by a factor of 2.
https://www2.clarku.edu/faculty/djoyce/complex/mult.html
2. Some basics about polynomials
The complex derivative of the polynomial
![]()
is given by
![]()
While proving that the polynomial has a root is hard, bounding the number of roots is less hard. A polynomial of order n, i.e. one whose max power term is z^n, has at most n roots. That’s because we can factorise out the roots of the polynomial one by one
After factorising out the first n roots, it becomes apparent that any other number won’t evaluate to zero, as each term in the multiplication is non zero.
Polynomials are ‘continuous’ functions. As their derivative is a polynomial, its derivative is also continuous. But I will give more details on what, exactly, continuity means and what a complex derivative means, in the next section.
3. Analysis Preliminaries
Let’s understand what sequences and convergence are
A sequence of complex numbers is simply a list of complex numbers, where for any integer n, you are allowed to receive the nth number in the list.
One example of a sequence of complex numbers is:
0.9 + 0.9i, 0.99 + 0.99i, 0.999 + 0.999i, 0.9999 + 0.9999i, 0.99999 + 0.99999i, …
where the Nth number in the list has N nines following the zero for both real and complex part
We say this sequence ‘converges’ to 1 + 1i. Why? The first term is only 0.1 + 0.1i away from 1 + 1i, the second term is only 0.01+0.01i away from 1+1i, and the Nth term is 0.00…01 + 0.00…1i away from 1+1i, where there are N zeros preceding the 1. If we use Manhattan distance then the distances are (0.2, 0.02, 0.002, 0.0002, …) which clearly tends to 0. If we use euclidean distance, we find the distances are (sqrt(0.02), sqrt(0.002), sqrt(0.0002), …) which also tend to zero. In general, if a sequence converges with euclidean distance, it converges to the same place with Manhattan distance, and vice versa.
So a good definition for convergence to 1+1i is: for any maximum distance from the target you specify, I can find an N such that all terms after the Nth sequence are within that distance from 1+1i.
This definition makes sense. If you set the target to be 0.00234 away in both real and complex parts, then we observe that 0.001 is smaller than 0.00234, and that from the third term onwards:
- 1–0.999=0.001≤0.00234
- 1–0.9999=0.0001≤0.00234
- 1–0.99999=0.00001≤0.00234
- and so on
Clearly, whatever you set the maximum distance we are allowed from one, eventually we can find a 0.000000000000000000…00000001 which is smaller than that number, and use the same argument as above.
3.2 Continuous functions
A continuous function preserves limits. In the example above, a continuous function f would ensure that the sequence (f(0.9 + 0.9i), f(0.99 + 0.99i), f(0.999 + 0.999i), …) converges to f(1+1i). An alternative, but mathematically equivalent definition, is that if you set a target for closeness, be it 0.1, or 0.0000001, then whatever it is, you can find a distance d, within which all the points are within that closeness.
This is best illustrated by an example. Suppose you set the target of 0.001 at a point z. Then I find a distance, which might be 0.0142, where if |w-z|