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 #
Nat.coprime_fermatNumber_fermatNumber: two distinct Fermat numbers are coprime.Nat.pepin_primality: For 0 < n, Fermat number Fβ is prime if3 ^ (2 ^ (2 ^ n - 1)) = -1 mod Fβfermat_primeFactors_one_lt: For 1 < n, Prime factors the Fermat number Fβ are of formk * 2 ^ (n + 2) + 1.
Fermat numbers: the n-th Fermat number is defined as 2^(2^n) + 1.
Instances For
theorem
Nat.prod_fermatNumber
(n : β)
:
β k β Finset.range n, k.fermatNumber = n.fermatNumber - 2
theorem
Nat.fermatNumber_eq_prod_add_two
(n : β)
:
n.fermatNumber = β k β Finset.range n, k.fermatNumber + 2
theorem
Nat.fermatNumber_eq_fermatNumber_sq_sub_two_mul_fermatNumber_sub_one_sq
(n : β)
:
(n + 2).fermatNumber = (n + 1).fermatNumber ^ 2 - 2 * (n.fermatNumber - 1) ^ 2
theorem
Int.fermatNumber_eq_fermatNumber_sq_sub_two_mul_fermatNumber_sub_one_sq
(n : β)
:
β(n + 2).fermatNumber = β(n + 1).fermatNumber ^ 2 - 2 * (βn.fermatNumber - 1) ^ 2
theorem
Nat.coprime_fermatNumber_fermatNumber
{m n : β}
(hmn : m β n)
:
m.fermatNumber.Coprime n.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.pairwise_coprime_fermatNumber :
Pairwise fun (m n : β) => m.fermatNumber.Coprime n.fermatNumber
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).
Fβ = 2^(2^n)+1 is prime if 3^(2^(2^n-1)) = -1 mod Fβ (PΓ©pin's test).
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.