Documentation

Mathlib.NumberTheory.Fermat

Fermat numbers #

The Fermat numbers are a sequence of natural numbers defined as Nat.fermatNumber n = 2^(2^n) + 1, for all natural numbers n.

Main theorems #

def Nat.fermatNumber (n : β„•) :
β„•

Fermat numbers: the n-th Fermat number is defined as 2^(2^n) + 1.

Instances For
    theorem Nat.fermatNumber_ne_one (n : β„•) :
    n.fermatNumber β‰  1
    theorem Nat.prod_fermatNumber (n : β„•) :
    ∏ k ∈ Finset.range n, k.fermatNumber = n.fermatNumber - 2
    theorem Nat.fermatNumber_succ (n : β„•) :
    (n + 1).fermatNumber = (n.fermatNumber - 1) ^ 2 + 1
    theorem Nat.coprime_fermatNumber_fermatNumber {m n : β„•} (hmn : m β‰  n) :

    Goldbach's theorem : no two distinct Fermat numbers share a common factor greater than one.

    From a letter to Euler, see page 37 in [juskevic2022].

    theorem Nat.pow_of_pow_add_prime {a n : β„•} (ha : 1 < a) (hn : n β‰  0) (hP : Prime (a ^ n + 1)) :
    βˆƒ (m : β„•), n = 2 ^ m

    Prime a ^ n + 1 implies n is a power of two (Fermat primes).

    theorem Nat.pepin_primality (n : β„•) (h : 3 ^ 2 ^ (2 ^ n - 1) = -1) :

    Fβ‚™ = 2^(2^n)+1 is prime if 3^(2^(2^n-1)) = -1 mod Fβ‚™ (PΓ©pin's test).

    theorem Nat.pepin_primality' (n : β„•) (h : 3 ^ ((n.fermatNumber - 1) / 2) = -1) :

    Fβ‚™ = 2^(2^n)+1 is prime if 3^((Fβ‚™ - 1)/2) = -1 mod Fβ‚™ (PΓ©pin's test).

    theorem Nat.pow_pow_add_primeFactors_one_lt {a n p : β„•} (hp : Prime p) (hp2 : p β‰  2) (hpdvd : p ∣ a ^ 2 ^ n + 1) :
    βˆƒ (k : β„•), p = k * 2 ^ (n + 1) + 1

    Prime factors of a ^ (2 ^ n) + 1 are of form k * 2 ^ (n + 1) + 1.

    theorem Nat.fermat_primeFactors_one_lt (n p : β„•) (hn : 1 < n) (hp : Prime p) (hpdvd : p ∣ n.fermatNumber) :
    βˆƒ (k : β„•), p = k * 2 ^ (n + 2) + 1

    Primality of Mersenne numbers Mβ‚™ = a ^ n - 1 #

    theorem Nat.prime_of_pow_sub_one_prime {a n : β„•} (hn1 : n β‰  1) (hP : Prime (a ^ n - 1)) :
    a = 2 ∧ Prime n

    Prime a ^ n - 1 implies a = 2 and prime n.