Primality Testing

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Primality Testing

 Primality testing is an important algorithmic problem.


 The problem of how to determine whether a given number is prime has
tremendous practical importance.
 For many cryptographic algorithms, it is necessary to select one or more
very large prime numbers at random.
 Thus, we are faced with the task of determining whether a given large
number is prime.
 Monte-Carlo randomization algorithm – does not guarantee correct
result. But probability of incorrect result is very small.

Miller-Rabin Randomized Primality Test

The procedure TEST takes a candidate integer n as input and returns the result
composite if n is definitely not a prime, and the result inconclusive if n may or
may not be a prime.
Prime Numbers and Pseudo Prime Numbers
Numerical Examples
1. Conduct primality test for n = 29.
n = 29
n – 1 = 28
n – 1 = 2k.q = 22.7 where, [k = 2, q = 7]
select random integer a such that 1 < a < 28
Hence, a value can be from 2 to 27

Let a = 10;
Compute aq mod n = 107 mod 29 = 17 -------- condition is false
For loop begins. For j = 0 to k-1 = 0 to 1
For each value of j check whether a2^j.q mod n = n-1
When j = 0, a2^j.q mod n = 102^0.7 mod 29 = 101.7mod 29 = 107 mod 29 = 17
Condition is false
Next iteration of j loop begins
When j = 1, a2^j.q mod n = 102^1.7 mod 29 = 102.7mod 29 = 1014 mod 29 = 28
Condition is true.
Algorithm returns “inconclusive” (i.e., 29 may be prime).

Try with a = 2

Let a = 2;
Compute aq mod n = 27 mod 29 = 12 -------- condition is false
For loop begins. For j = 0 to k-1 = 0 to 1
For each value of j check whether a2^j.q mod n = n-1
When j = 0, a2^j.q mod n = 22^0.7 mod 29 = 21.7mod 29 = 27 mod 29 = 12
Condition is false
Next iteration of j loop begins
When j = 1, a2^j.q mod n = 22^1.7 mod 29 = 22.7mod 29 = 214 mod 29 = 28
Condition is true.
Algorithm returns “inconclusive” (i.e., 29 may be prime).

If we perform the test for all integers a in the range from 2 to through 27, we
get the same inconclusive result, which is compatible with n being a prime
number.

2. Conduct primality test for n = 221


n = 221
n – 1 = 220
n – 1 = 2k.q = 22.55 where, [k = 2, q = 55]
select random integer a such that 1 < a < 220
Hence, a value can be from 2 to 219

Let a = 5;
Compute aq mod n = 555 mod 221 = 112 -------- condition is false
For loop begins. For j = 0 to k-1 = 0 to 1
For each value of j check whether a2^j.q mod n = n-1
When j = 0, a2^j.q mod n = 52^0.55 mod 221 = 51.55mod 221 = 555mod 221 = 112
Condition is false
Next iteration of j loop begins
When j = 1, a2^j.q mod n = 52^1.55 mod 221 = 52.55mod 221 = 5110 mod 221 = 168
Condition is false.
For loop terminates.
Algorithm returns “composite” (i.e., 221 is definitely a composite).
Try with a = 21
Let a = 21;
Compute aq mod n = 2155 mod 221 = 200 -------- condition is false
For loop begins. For j = 0 to k-1 = 0 to 1
For each value of j check whether a2^j.q mod n = n-1
When j = 0, a2^j.q mod n = 212^0.55 mod 221 = 211.55mod 221 = 2155mod 221 =
200
Condition is false
Next iteration of j loop begins
When j = 1, a2^j.q mod n = 212^1.55 mod 221 = 212.55mod 221 = 21110 mod 221 =
220
Condition is true.
Algorithm returns “inconclusive” (i.e., 221 may be prime).

In fact, of the 218 integers from 2 through 219, four of these will return an
inconclusive result, namely 21, 47, 174, and 200.

You might also like