Fermat Pseudoprimes #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define Fermat pseudoprimes: composite numbers that pass the Fermat primality test.
A natural number n
passes the Fermat primality test to base b
(and is therefore deemed a
"probable prime") if n
divides b ^ (n - 1) - 1
. n
is a Fermat pseudoprime to base b
if n
is a composite number that passes the Fermat primality test to base b
and is coprime with b
.
Fermat pseudoprimes can also be seen as composite numbers for which Fermat's little theorem holds true.
Numbers which are Fermat pseudoprimes to all bases are known as Carmichael numbers (not yet defined in this file).
Main Results #
The main definitions for this file are
fermat_psp.probable_prime
: A numbern
is a probable prime to baseb
if it passes the Fermat primality test; that is, ifn
dividesb ^ (n - 1) - 1
fermat_psp
: A numbern
is a pseudoprime to baseb
if it is a probable prime to baseb
, is composite, and is coprime withb
(this last condition is automatically true ifn
dividesb ^ (n - 1) - 1
, but some sources include it in the definition).
Note that all composite numbers are pseudoprimes to base 0 and 1, and that the definiton of
probable_prime
in this file implies that all numbers are probable primes to bases 0 and 1, and
that 0 and 1 are probable primes to any base.
The main theorems are
fermat_psp.exists_infinite_pseudoprimes
: there are infinite pseudoprimes to any baseb ≥ 1
n
is a probable prime to base b
if n
passes the Fermat primality test; that is, n
divides
b ^ (n - 1) - 1
.
This definition implies that all numbers are probable primes to base 0 or 1, and that 0 and 1 are
probable primes to any base.
Instances for fermat_psp.probable_prime
n
is a Fermat pseudoprime to base b
if n
is a probable prime to base b
and is composite. By
this definition, all composite natural numbers are pseudoprimes to base 0 and 1. This definition
also permits n
to be less than b
, so that 4 is a pseudoprime to base 5, for example.
Equations
- fermat_psp n b = (fermat_psp.probable_prime n b ∧ ¬nat.prime n ∧ 1 < n)
Instances for fermat_psp
Equations
- fermat_psp.decidable_probable_prime n b = nat.decidable_dvd n (b ^ (n - 1) - 1)
Equations
If n
passes the Fermat primality test to base b
, then n
is coprime with b
, assuming that
n
and b
are both positive.
If n
is a Fermat pseudoprime to base b
, then n
is coprime with b
, assuming that b
is
positive.
This lemma is a small wrapper based on coprime_of_probable_prime
All composite numbers are Fermat pseudoprimes to base 1.
For all positive bases, there exist Fermat infinite pseudoprimes to that base.
Given in this form: for all numbers b ≥ 1
and m
, there exists a pseudoprime n
to base b
such
that m ≤ n
. This form is similar to nat.exists_infinite_primes
.
Infinite set variant of exists_infinite_pseudoprimes