*Theorem 1.* There are infinitely many primes.

__ Proof.__ Define \(S(a,b)\) to be the arithmetic sequence \(\{an + b\::\: n \in
\mathbb{N}\}\). Then we can define a topology on \(\mathbb{Z}\) by calling a subset open if and only if it is
the union of some arithmetic sequences. It is easy enough to show that this actually does define a topology on
\(\mathbb{Z}\). We notice two things:

- The compliment of a finite set can't be closed, because this would imply that a finite set could be open. But the only finite open set in our topology is the empty set.
- Any arithmetic sequence \(S(a,b)\) is closed, since we can write the compliment of \(S(a,b)\) as $$ \bigcup_{i=1}^{a-1} S(a, b+i), $$ which is open because it is the union of arithmetic sequences.

This is a classic application of the fundamental group. I'll assume that one has already calculated the fundamental group of a circle to be \( \mathbb{Z} \), even though this takes a lot of work. I won't go into rigorous detail, but the point will be more to get a visual understanding of the proof.

*Theorem 2.* A degree \(n\)-polynomial with complex coefficients \( p \in \mathbb{C}[x] \) has
\( n \) roots in \( \mathbb{C}\).

__ Proof.__
If we show that one root of \(p\) exists, say \(\alpha\), then we can factor out \(p(x)/(x-\alpha)\) to get
another polynomial in \(\mathbb{C}\). So by some inductive argument, it suffices to show that a non-constant
polynomial has a root in \(\mathbb{C}\).

Suppose for the sake of contradiction that \(p\) has no root in \(\mathbb{C}\). So \(p\) is a function from \( \mathbb{C} \) to \(\mathbb{C} \setminus \{0\}\). We'll visualize the input and output spaces as follows:

Consider the circle around the origin $$ C_r = \{re^{i\theta}\:|\:\theta \in [0, 2\pi)\}. $$ First, if the circle has radius 0, then \(C_0 = 0\). So \( p(C_0) \) is some point in the output space:

Next, recall that when \(x\) gets large, \(p(x)\) starts to look like its highest order term. So if \(p(x) = a_nx^n+\dots +a_1x +a_0\), then at large values of \(x\), \(p(x)\) acts like \(a_n x^n\) (in an informal, handwavy manner of speaking). So for \(r >> 0\), we get that \(p(C_r)\) looks like \( a_n(C_r)^n \), i.e. a big circle. So we should be able to find a value \(R\) large enough so that \( p(C_R) \) encircles \(p(C_0)\) and the point \(0\).

Finally, observe that varying \(r\) from \(0\) to \(R\) defines a homotopy from \(p(C_R)\) to \( p(C_0) \), because polynomials are continuous. But this means that the (loop homeomorphic to the) circle \( p(C_R) \) contracts to the point \( p(C_0) \). The one-point-complement of \(\mathbb{C}\) is homotopy equivalent to \(S^1\), which has nontrivial fundamental group, and in particular \(p(C_R)\) describes a nontrivial element of this fundamental group, so this is a contradiction. In other words, we want to shrink the red curve \(p(C_R)\) to the blue point \(p(C_0)\), but analysis of \(S^1\) says that we can't do so without 'getting stuck' on the point 0. So \(p\) must have a root in \(\mathbb{C}\). \(\Box\)