Every condition that all primes satisfy has a corresponding primality test and corresponding class of pseudoprimes.
The most famous example is Fermat’s little theorem. That theorem says that for all primes p, a certain congruence holds. The corresponding notion of pseudoprime is a composite number that also satisfies Fermat’s congruence.
To make a useful primality test, a criterion should be efficient to compute, and the set of pseudoprimes should be small.
A Fermat pseudoprime base b is a composite number n such that
bn-1 = 1 (mod n).
The smallest example is 341 because
2340 = 1 mod 341
and 341 = 11*31 is composite. More on Fermat pseudoprimes here.
Fermat’s little theorem leads to a practical primality test, but not all theorems about primes lead to such a practical test. For example, Wilson’s theorem says that if p is prime, then
(p – 1)! = -1 mod p.
A Wilson pseudoprime would be a composite number n such that
(n – 1)! = -1 mod n.
The good news is that the set of Wilson pseudoprimes is small. In fact, it’s empty!
The full statement of Wilson’s theorem is that
(p – 1)! = -1 mod p
if and only if p is prime and so there are no Wilson pseudoprimes.
The bad news is that computing (p – 1)! is more work than testing whether p is prime.
Let p be an odd prime and let b be a positive integer less than p. Then a theorem of Euler says that
where the symbol on the right is the Legendre symbol. It looks like a fraction in paretheses, but that’s not what it means. The symbol is defined to be 1 if b is a square mod p and -1 otherwise. It’s an unfortunate but well-established bit of notation.
We could turn Euler’s theorem around and convert it into a primality test by saying that if a number p does not the congruence above, it cannot be prime.
There’s one complication with this: the Legendre symbol is only defined if p is prime. However, there is a generalization of the Legendre symbol, the Jacobi symbol, which is defined as long as the top argument is relatively prime to the bottom argument. Euler pseudoprimes are also known as Euler-Jacobi pseudoprimes.
The Jacobi symbol uses the same notation as the Legendre symbol, but there is no ambiguity because if the bottom argument is prime, the Jacobi symbol equal the Legendre symbol. More on Legendre and Jacobi symbols here.
An odd composite number n is a Euler pseudoprime base b if n and b are relatively prime and
where the symbol on the right is now the Jacobi symbol.
There are efficient algorithms for computing Jacobi symbols, and so the criterion above is a practical way to prove a number is not prime. But there are Euler pseudoprimes that slip past this test. A small example is n = 9 and b = 10. Euler pseudoprimes are less common than Fermat pseudoprimes.
There are many other examples: Lucas pseudoprimes, elliptic pseudoprimes, etc. Any theorem about prime numbers can be recast as a primality test, and the composite numbers that slip through labeled pseduoprimes relative to that test. The question is whether such a test is useful, i.e. efficient to compute and without too many false positives.