# Hello, Zettel!

Thanks to rapid advances in technology, it’s never been easier to put words on the Internet.

## Features

### Maths

Prime numbers are positive integers $$p > 1$$ that have exactly one positive divisor other than $$1$$.

The $$n$$th prime number is commonly denoted $$p_n$$, so $$p_1 = 2$$, $$p_2 = 3$$, and so on.

The Dirichlet generating function of the characteristic function of the prime numbers $$p_n$$ is given by

\begin{aligned} \sum^\infty_{n=1} \frac{[n \in \{p_k\}^\infty_{k=1}]}{n^{\scriptsize S}} &= \sum^\infty_{n=1} \frac{1}{p^{\scriptsize S}_n} \\ &= \frac{1}{2^{\scriptsize S}} + \frac{1}{3^{\scriptsize S}} + \frac{1}{5^{\scriptsize S}} + \frac{1}{7^{\scriptsize S}} + \ldots \\ &= P({\scriptsize S}), \end{aligned}

where $$P({\scriptsize S})$$ is the prime zeta function and $$[{\scriptsize S}]$$ is an Iverson bracket.

### Code

main :: IO ()
main = mapM_ print \$ take 10 primes

primes :: [Integer]
primes = 2 : 3 : filter isPrime [5,7..]

isPrime :: Integer -> Bool
isPrime = null . primeDivisors

primeDivisors :: Integer -> [Integer]
primeDivisors n = [ p | p <- takeWhile ((<=n) . (^2)) primes, n mod p == 0 ]

### Diagrams

 graph LR main --> primes primes --> isPrime isPrime --> primeDivisors primeDivisors --> primes