Karl Schwarzschild: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>JanBielawski
Redirect a link to archgive.org
 
en>Myasuda
Line 1: Line 1:
Not much to write about me I think.<br>Finally a part of this community.<br>I really wish I'm useful in one way here.<br><br>Here is my blog post [http://hemorrhoidtreatmentfix.com/prolapsed-hemorrhoid-treatment prolapsed hemorrhoid treatment]
The '''Fermat primality test''' is a [[randomized algorithm|probabilistic]] test to determine if a number is [[probable prime]].
 
==Concept==
[[Fermat's little theorem]] states that if ''p'' is prime and <math>1 \le a < p</math>, then
 
:<math>a^{p-1} \equiv 1 \pmod{p}.</math>
 
If we want to test if ''p'' 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 ''p'' is composite.  If the equality does hold for many values of ''a'', then we can say that ''p'' is [[probable prime]].
 
It might be in our tests that we do not pick any value for ''a'' such that the equality fails.  Any ''a'' such that
:<math>a^{n-1} \equiv 1 \pmod{n}</math>
when ''n'' is composite is known as a ''Fermat liar''. Vice versa, in this case ''n'' is called [[Fermat pseudoprime]] to base ''a''.
 
If we do pick an ''a'' such that
:<math>a^{n-1} \not\equiv 1 \pmod{n}</math>
then ''a'' is known as a ''Fermat witness'' for the compositeness of ''n''.
 
== Example ==
Suppose we wish to determine if ''n''&nbsp;=&nbsp;221 is prime. Randomly pick 1 ≤ ''a'' < 221, say ''a''&nbsp;=&nbsp;38. We check the above equality and find that it holds:
:<math>a^{n-1} = 38^{220} \equiv 1 \pmod{221}.</math>
Either 221 is prime, or 38 is a Fermat liar, so we take another ''a'', say 26:
:<math>a^{n-1} = 26^{220} \equiv 169 \not\equiv 1 \pmod{221}.</math>
So 221 is composite and 38 was indeed a Fermat liar.
 
==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 [1, ''n'' &minus; 1]
::If <math>a^{n-1}\not\equiv1 \pmod n</math>, then return ''composite''
:If composite is never returned: return ''probably prime''
 
Using fast algorithms for [[modular exponentiation]], the running time of this algorithm is [[Big O notation|O]](''k'' × log<sup>2</sup>''n'' × log log ''n'' × log log log ''n''), where ''k'' is the number of times we test a random ''a'', and ''n'' is the value we want to test for primality.
 
==Flaw==
There are infinitely many values of <math>n</math> (known as [[Carmichael number]]s) for which <u>all</u> values of <math>a</math> for which <math>gcd(a, n) = 1</math> are Fermat liars.  While Carmichael numbers are substantially rarer than prime numbers,<ref>Erdös' upper bound for the number of Carmichael numbers is lower than the prime number function n/log(n)</ref> there are enough of them that Fermat's primality test is often not used in the above form.  Instead, other more powerful extensions of the Fermat test, such as [[Baillie-PSW primality test|Baillie-PSW]], [[Miller-Rabin primality test|Miller-Rabin]], and [[Solovay-Strassen primality test|Solovay-Strassen]] are more commonly used.
 
In general, if <math>n</math> is not a Carmichael number then at least half of all
 
:<math>a\in(\mathbb{Z}/n\mathbb{Z})^*</math>
 
are Fermat witnesses. For proof of this, let <math>a</math> be a Fermat witness and <math>a_1</math>, <math>a_2</math>, ..., <math>a_s</math> be Fermat liars.  Then
 
:<math>(a\cdot a_i)^{n-1} \equiv a^{n-1}\cdot a_i^{n-1} \equiv a^{n-1} \not\equiv 1\pmod{n}</math>
 
and so all <math>a \times a_i</math> for <math>i = 1, 2, ..., s</math> are Fermat witnesses.
 
==Applications==
The encryption program [[Pretty Good Privacy|PGP]] uses this primality test in its algorithms. The chance of PGP generating a [[Carmichael number]] is less than 1 in 10<sup>50</sup>, which is more than adequate for practical purposes.
 
==References==
* {{cite book |author=[[Thomas H. Cormen]], [[Charles E. Leiserson]], [[Ronald L. Rivest]], [[Clifford Stein]] |title=[[Introduction to Algorithms]] |edition=Second Edition |publisher=MIT Press; McGraw-Hill |year=2001 |isbn=0-262-03293-7 |page=889&ndash;890 |chapter=Section 31.8: Primality testing}}
{{reflist}}
 
{{number theoretic algorithms}}
 
[[Category:Primality tests]]
[[Category:Modular arithmetic]]

Revision as of 01:59, 7 December 2013

The Fermat primality test is a probabilistic test to determine if a number is probable prime.

Concept

Fermat's little theorem states that if p is prime and 1a<p, then

ap11(modp).

If we want to test if p 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 p is composite. If the equality does hold for many values of a, then we can say that p is probable prime.

It might be in our tests that we do not pick any value for a such that the equality fails. Any a such that

an11(modn)

when n is composite is known as a Fermat liar. Vice versa, in this case n is called Fermat pseudoprime to base a.

If we do pick an a such that

an1≢1(modn)

then a is known as a Fermat witness for the compositeness of n.

Example

Suppose we wish to determine if n = 221 is prime. Randomly pick 1 ≤ a < 221, say a = 38. We check the above equality and find that it holds:

an1=382201(mod221).

Either 221 is prime, or 38 is a Fermat liar, so we take another a, say 26:

an1=26220169≢1(mod221).

So 221 is composite and 38 was indeed a Fermat liar.

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 [1, n − 1]
If an1≢1(modn), then return composite
If composite is never returned: return probably prime

Using fast algorithms for modular exponentiation, the running time of this algorithm is O(k × log2n × log log n × log log log n), where k is the number of times we test a random a, and n is the value we want to test for primality.

Flaw

There are infinitely many values of n (known as Carmichael numbers) for which all values of a for which gcd(a,n)=1 are Fermat liars. While Carmichael numbers are substantially rarer than prime numbers,[1] there are enough of them that Fermat's primality test is often not used in the above form. Instead, other more powerful extensions of the Fermat test, such as Baillie-PSW, Miller-Rabin, and Solovay-Strassen are more commonly used.

In general, if n is not a Carmichael number then at least half of all

a(/n)*

are Fermat witnesses. For proof of this, let a be a Fermat witness and a1, a2, ..., as be Fermat liars. Then

(aai)n1an1ain1an1≢1(modn)

and so all a×ai for i=1,2,...,s are Fermat witnesses.

Applications

The encryption program PGP uses this primality test in its algorithms. The chance of PGP generating a Carmichael number is less than 1 in 1050, which is more than adequate for practical purposes.

References

  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

Template:Number theoretic algorithms

  1. Erdös' upper bound for the number of Carmichael numbers is lower than the prime number function n/log(n)