This is a Java Program to Implement Miller Rabin Primality Test Algorithm. Miller Rabin 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 Miller Rabin 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 Miller Rabin Primality Test Algorithm
**/
import java.util.Scanner;
import java.util.Random;
import java.math.BigInteger;
/** Class MillerRabin **/
public class MillerRabin
{
/** 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;
long s = n - 1;
while (s % 2 == 0)
s /= 2;
Random rand = new Random();
for (int i = 0; i < iteration; i++)
{
long r = Math.abs(rand.nextLong());
long a = r % (n - 1) + 1, temp = s;
long mod = modPow(a, temp, n);
while (temp != n - 1 && mod != 1 && mod != n - 1)
{
mod = mulMod(mod, mod, n);
temp *= 2;
}
if (mod != n - 1 && temp % 2 == 0)
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;
}
/** Function to calculate (a * b) % c **/
public long mulMod(long a, long b, long mod)
{
return BigInteger.valueOf(a).multiply(BigInteger.valueOf(b)).mod(BigInteger.valueOf(mod)).longValue();
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Miller Rabin Primality Algorithm Test\n");
/** Make an object of MillerRabin class **/
MillerRabin mr = new MillerRabin();
/** 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 = mr.isPrime(num, k);
if (prime)
System.out.println("\n"+ num +" is prime");
else
System.out.println("\n"+ num +" is composite");
}
}
Output:
Miller Rabin Primality Algorithm Test Enter number 5510389 Enter number of iterations 2 5510389 is prime
Related posts:
How to Read a Large File Efficiently with Java
Registration with Spring Security – Password Encoding
HTTP Authentification and CGI/Servlet
Java Program to Implement Hash Tables Chaining with Binary Trees
Marker Interface trong Java
Spring Boot - OAuth2 with JWT
Hướng dẫn Java Design Pattern – DAO
Quick Guide to @RestClientTest in Spring Boot
How to Get the Last Element of a Stream in Java?
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Comparing Strings in Java
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java Program to Implement AVL Tree
Send email with authentication
Fixing 401s with CORS Preflights and Spring Security
Logout in an OAuth Secured Application
Java Program to Implement Self Balancing Binary Search Tree
Iterating over Enum Values in Java
Java Program to Implement Suffix Tree
Java Program to Check Multiplicability of Two Matrices
Java Program to Implement K Way Merge Algorithm
Concurrent Test Execution in Spring 5
Guide to the Java Queue Interface
Spring Boot - Service Components
Reading an HTTP Response Body as a String in Java
Java Program to Implement Vector API
Transaction Propagation and Isolation in Spring @Transactional
Guide to the Volatile Keyword in Java
Java Program to Implement Floyd-Warshall Algorithm
ArrayList trong java
Spring Boot - Interceptor