  Modern cryptography algorithms are commonly used to ensure information
security. Prime numbers are needed in many asymmetric cryptography algorithms.
For example, RSA algorithm selects two large prime numbers and multiplies to
each other to obtain a large composite number whose factorization is very
difficult. Producing a prime number is not an easy task as they are not
distributed regularly through integers. Primality testing algorithms are used
to determine whether a particular number is prime or composite. In this paper,
an intensive survey is thoroughly conducted among the several primality testing
algorithms showing the pros and cons, the time complexity, and a brief summary
of each algorithm. Besides, an implementation of these algorithms is
accomplished using Java and Python as programming languages to evaluate the
efficiency of both the algorithms and the programming languages.

Cryptography and Security;Number Theory