Fermat Primality Test

The Fermat primality test is a probabalistic test to determine if a number is composite or probably prime.

Concept

Fermat's little theorem states that if p is prime and 1 \le a \le p, then
a^{p-1} \equiv 1 \pmod{p}.
If we want to test if n is prime, then we can pick random a's in the interval and see if the equality holds. If the equality does not hold for a value of a, then n is composite. If the equality does hold for many values of a, then we can say that n is probably prime, or a pseudoprime. It may be in our tests that we do not pick any value for a such that the equality fails. Any a such that
a^{n-1} \equiv 1 \pmod{n}
when n is composite is known as a Fermat liar. If we do pick an a such that
a^{n-1} \not\equiv 1 \pmod{n}
then a is known as a Fermat witness for the compositeness of n.

Algorithm and running time

The algorithm can be written as follows:
Inputs: n: a value to test for primality; k: a parameter that determines the number of times to test for primality
Output: composite if n is composite, otherwise probably prime
repeat k times:
pick a randomly in the range n − 1
if an − 1 mod n ≠ 1 then return composite
return probably prime
Using fast algorithms for modular exponentiation, the running time of this algorithm is O(k × log3n), where k is the number of times we test a random a, and n is the value we want to test for primality.

Flaws

There are certain values of n known as Carmichael numbers for which all values of a for which gcd(a,n)=1 are Fermat liars. Although Carmichael numbers are rare, there are enough of them that Fermat's primality test is often not used in favor of other primality tests such as Miller-Rabin and Solovay-Strassen. In general, if n is not a Carmichael number then at least half of all
a\in(\mathbb{Z}/n\mathbb{Z})^*
are Fermat witnesses. For proof of this let a be a Fermat witness and a1, a2, ..., as be Fermat liars. Then
(a\cdot a_i)^{n-1} \equiv a^{n-1}\cdot a_i^{n-1} \equiv a^{n-1} \not\equiv 1\pmod{n}
and so all a × ai for i = 1, 2, ..., s are Fermat witnesses.

Usage

The encryption program PGP uses this primality test in its algorithms.

 

<< PreviousWord BrowserNext >>
battle of pavia (773)
battle of pozzolo (1800)
the logic of scientific discovery
timothy west
battle of rastadt (1796)
battle of raucoux (1746)
battle of rivoli
richard briers
conflicting theories
battle of st laurent de la muga (1794)
criticism of islam
hybrid car
battle of seneffe
battle of solfrino
battle of st dizier
zhang chunqiao
yao wenyuan
wang hongwen
battle of steinkeerke (1692)
battle of stockash (1800)
battle of chernaya river
battle of toulouse
local councils of malta
battle of tourcoing (1794)
battle of platzberg (1794)
battle of trippstadt (1794)
battle of trebia (1799)
battle of turckeim
ko4ting
battle of vauchamps
battle of talavera
theodore roethke
battle of tudela
battle of vimeiro
battle of vitoria
battle of wagram
battle of wattignies (1793)
battle of woerth (1793)
battle of yorktown (1781)
battle of zurich (1799)
fountains of wayne
the ataris
permafrost
meet the residents