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 #

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

Equations
Instances For
    @[deprecated Nat.fermatNumber_strictMono (since := "2024-11-25")]

    Alias of Nat.fermatNumber_strictMono.

    @[deprecated Nat.prod_fermatNumber (since := "2024-11-25")]

    Alias of Nat.prod_fermatNumber.

    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.