Java Program to Implement Fermat Primality Test Algorithm

This is a Java Program to Implement Fermat Primality Test Algorithm. Fermat Primality Test is an algorithm which is used to determine if a given number is prime or not.

Here is the source code of the Java Program to Implement Fermat Primality Test Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/**
 ** Java Program to Implement Fermat Primality Test Algorithm
 **/
 
import java.util.Scanner;
import java.util.Random;
 
/** Class FermatPrimality **/
public class FermatPrimality
{
    /** Function to check if prime or not **/
    public boolean isPrime(long n, int iteration)
    {
        /** base case **/
        if (n == 0 || n == 1)
            return false;
        /** base case - 2 is prime **/
        if (n == 2)
            return true;
        /** an even number other than 2 is composite **/
        if (n % 2 == 0)
            return false;
 
        Random rand = new Random();
        for (int i = 0; i < iteration; i++)
        {
            long r = Math.abs(rand.nextLong());            
            long a = r % (n - 1) + 1;
            if (modPow(a, n - 1, n) != 1)
                return false;
        }
        return true;        
    }
    /** Function to calculate (a ^ b) % c **/
    public long modPow(long a, long b, long c)
    {
        long res = 1;
        for (int i = 0; i < b; i++)
        {
            res *= a;
            res %= c; 
        }
        return res % c;
    }    
    /** Main function **/
    public static void main (String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Fermat Primality Algorithm Test\n");
        /** Make an object of FermatPrimality class **/
        FermatPrimality fp = new FermatPrimality();
        /** Accept number **/
        System.out.println("Enter number\n");
        long num = scan.nextLong();
        /** Accept number of iterations **/
        System.out.println("\nEnter number of iterations");
        int k = scan.nextInt();
        /** check if prime **/
        boolean prime = fp.isPrime(num, k);
        if (prime)
            System.out.println("\n"+ num +" is prime");
        else
            System.out.println("\n"+ num +" is composite");        
    }
}

Output:

Fermat Primality Algorithm Test
 
Enter number
 
999983
 
Enter number of iterations
2
 
999983 is prime

Related posts:

Checked and Unchecked Exceptions in Java
OAuth2 Remember Me with Refresh Token
New Features in Java 8
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
A Guide to Java SynchronousQueue
Create a Custom Exception in Java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Perform Finite State Automaton based Search
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java Program to Implement Cartesian Tree
Java Program to Implement Efficient O(log n) Fibonacci generator
Spring Cloud Series – The Gateway Pattern
Java Program to Implement Ternary Tree
Java Program to Implement the Hill Cypher
Test a REST API with Java
Một số nguyên tắc, định luật trong lập trình
Introduction to Java 8 Streams
Guava – Join and Split Collections
XML Serialization and Deserialization with Jackson
Guide to CountDownLatch in Java
Java Program to Implement Shoelace Algorithm
Java Program to Implement Knapsack Algorithm
Java Program to Check Cycle in a Graph using Topological Sort
4 tính chất của lập trình hướng đối tượng trong Java
JUnit5 Programmatic Extension Registration with @RegisterExtension
Java Program to Implement Insertion Sort
Guide to the Java Queue Interface
Using Java Assertions
Java Program to find the maximum subarray sum O(n^2) time(naive method)
How to Round a Number to N Decimal Places in Java
Show Hibernate/JPA SQL Statements from Spring Boot
Java Program to Delete a Particular Node in a Tree Without Using Recursion