Traveling Home

Subtitle

Blog

The Fermat primality test

Posted by [email protected] on

After several long tangents writing about orthogons and the chromatic number of the plane, I’m finally getting back to writing about primality testing. All along in this series, my ultimate goal has been to present some general primality testing algorithms and the math behind them, and now we’re finally ready to see our first (sort of!). As a reminder, and as a guide for anyone reading this without reading the previous posts, here’s the story so far:

So let’s see our first primality testing machine! This one is actually very simple. Remember that Fermat’s Little Theorem (the first version) says:

If p is prime and a is an integer where 0 < a < p, then a^p-1 equiv 1 pmod p.

We can turn this directly into a test for primality, as follows: given some number n that we want to test for primality, pick an integer a between 0 and n (say, randomly), and compute a^n-1 pmod n. If the result is not equal to 1, then n is definitely not prime, since it would contradict Fermat’s Little Theorem. In that case we can immediately stop and report that n is composite (though note that we have not found any factors!).

(In actual practice, we don’t bother trying a = 1 or a = n-1; we only pick from 1 < a < n-1. Can you see why it’s useless to test a = 1 or a = n-1?)

For example, suppose we want to test n = 8. Let’s pick a = 2. We compute a^n-1 = 2^7 = 128 equiv 0 pmod 8; hence n = 8 is not prime (but you probably knew that already). In this particular exampe a is actually a factor of n, but it need not be. For example, let n = 15 and pick a = 7; then computing 7^14 equiv 4 pmod 15 proves that n is composite, even though 7 and 15 share no common factors.

So what if a^n-1is equivalent to 1 pmod n? Unfortunately, Fermat’s Little Theorem is not an “if and only if” statement! It is quite possible to have a^n-1 equiv 1 pmod n even when n is composite. So if we do get a result of 1, we simply can’t conclude anything about n. For example, with n = 15 again, if we happened to pick a = 4 instead of a = 7, then we get 4^14 equiv 1 pmod 15 even though 15 isn’t prime.

So suppose we pick some a and get a^n-1 equiv 1 pmod n. What can we do? Well, just try another a! If we get a^n-1 
otequiv 1 pmod n for the new a, stop and report that n is composite. Otherwise, pick another a, and so on.

In general, we can iterate some fixed number of times k. If we ever find an a such that a^n-1 
otequiv 1 pmod n, then we can report that n is definitely not prime. Otherwise, if we get through testing k different values of a and they all yield 1, then we can report that n is probably prime.

So this is better than nothing, but it’s not quite a primality machine, because it can’t tell us for sure that a number is prime. And it leaves a lot more questions: could we make k big enough so that we could know for sure whether n is prime? How big would k have to be? What about for composite numbers; how fast do we expect this to be? Are there other ways to build on this basic idea to get better (faster, more certain) primality tests? I’ll write about all this and more in future posts!



Source: https://mathlesstraveled.com/2018/08/03/the-fermat-primality-test/

Categories: None

Post a Comment

Oops!

Oops, you forgot something.

Oops!

The words you entered did not match the given text. Please try again.

Already a member? Sign In

0 Comments